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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (492) hide show
  1. package/git-revision.txt +1 -1
  2. package/lib/@types/global.d.js +0 -2
  3. package/lib/@types/global.d.js.map +1 -1
  4. package/lib/browser-index.d.ts.map +1 -1
  5. package/lib/browser-index.js +0 -11
  6. package/lib/browser-index.js.map +1 -1
  7. package/lib/client.d.ts +2 -1221
  8. package/lib/client.d.ts.map +1 -1
  9. package/lib/client.js +331 -2821
  10. package/lib/client.js.map +1 -1
  11. package/lib/embedded.d.ts +0 -22
  12. package/lib/embedded.d.ts.map +1 -1
  13. package/lib/embedded.js +24 -166
  14. package/lib/embedded.js.map +1 -1
  15. package/lib/event-mapper.d.ts.map +1 -1
  16. package/lib/event-mapper.js +0 -4
  17. package/lib/event-mapper.js.map +1 -1
  18. package/lib/matrix.d.ts +0 -19
  19. package/lib/matrix.d.ts.map +1 -1
  20. package/lib/matrix.js +1 -26
  21. package/lib/matrix.js.map +1 -1
  22. package/lib/models/MSC3089Branch.d.ts.map +1 -1
  23. package/lib/models/MSC3089Branch.js +0 -3
  24. package/lib/models/MSC3089Branch.js.map +1 -1
  25. package/lib/models/event.d.ts +0 -94
  26. package/lib/models/event.d.ts.map +1 -1
  27. package/lib/models/event.js +0 -274
  28. package/lib/models/event.js.map +1 -1
  29. package/lib/models/poll.d.ts.map +1 -1
  30. package/lib/models/poll.js +1 -5
  31. package/lib/models/poll.js.map +1 -1
  32. package/lib/models/relations-container.d.ts.map +1 -1
  33. package/lib/models/relations-container.js +1 -7
  34. package/lib/models/relations-container.js.map +1 -1
  35. package/lib/models/relations.d.ts +0 -1
  36. package/lib/models/relations.d.ts.map +1 -1
  37. package/lib/models/relations.js +0 -8
  38. package/lib/models/relations.js.map +1 -1
  39. package/lib/models/room-state.d.ts.map +1 -1
  40. package/lib/models/room-state.js +10 -26
  41. package/lib/models/room-state.js.map +1 -1
  42. package/lib/models/room.d.ts +0 -18
  43. package/lib/models/room.d.ts.map +1 -1
  44. package/lib/models/room.js +94 -148
  45. package/lib/models/room.js.map +1 -1
  46. package/lib/models/thread.d.ts.map +1 -1
  47. package/lib/models/thread.js +0 -1
  48. package/lib/models/thread.js.map +1 -1
  49. package/lib/sliding-sync-sdk.d.ts +2 -3
  50. package/lib/sliding-sync-sdk.d.ts.map +1 -1
  51. package/lib/sliding-sync-sdk.js +41 -90
  52. package/lib/sliding-sync-sdk.js.map +1 -1
  53. package/lib/sync.d.ts +0 -12
  54. package/lib/sync.d.ts.map +1 -1
  55. package/lib/sync.js +1 -73
  56. package/lib/sync.js.map +1 -1
  57. package/lib/testing.d.ts +0 -48
  58. package/lib/testing.d.ts.map +1 -1
  59. package/lib/testing.js +0 -105
  60. package/lib/testing.js.map +1 -1
  61. package/lib/types.d.ts +0 -1
  62. package/lib/types.d.ts.map +1 -1
  63. package/lib/types.js.map +1 -1
  64. package/package.json +1 -3
  65. package/src/@types/global.d.ts +0 -3
  66. package/src/browser-index.ts +0 -11
  67. package/src/client.ts +60 -2882
  68. package/src/embedded.ts +3 -130
  69. package/src/event-mapper.ts +0 -4
  70. package/src/matrix.ts +0 -28
  71. package/src/models/MSC3089Branch.ts +0 -3
  72. package/src/models/event.ts +0 -289
  73. package/src/models/poll.ts +0 -6
  74. package/src/models/relations-container.ts +1 -8
  75. package/src/models/relations.ts +0 -8
  76. package/src/models/room-state.ts +2 -8
  77. package/src/models/room.ts +0 -62
  78. package/src/models/thread.ts +0 -1
  79. package/src/sliding-sync-sdk.ts +2 -72
  80. package/src/sync.ts +1 -98
  81. package/src/testing.ts +0 -108
  82. package/src/types.ts +0 -1
  83. package/CHANGELOG.md +0 -5910
  84. package/lib/@types/AESEncryptedSecretStoragePayload.d.ts +0 -14
  85. package/lib/@types/AESEncryptedSecretStoragePayload.d.ts.map +0 -1
  86. package/lib/@types/AESEncryptedSecretStoragePayload.js +0 -1
  87. package/lib/@types/AESEncryptedSecretStoragePayload.js.map +0 -1
  88. package/lib/@types/crypto.d.ts +0 -47
  89. package/lib/@types/crypto.d.ts.map +0 -1
  90. package/lib/@types/crypto.js +0 -1
  91. package/lib/@types/crypto.js.map +0 -1
  92. package/lib/@types/matrix-sdk-crypto-wasm.d.js +0 -1
  93. package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +0 -1
  94. package/lib/common-crypto/CryptoBackend.d.ts +0 -240
  95. package/lib/common-crypto/CryptoBackend.d.ts.map +0 -1
  96. package/lib/common-crypto/CryptoBackend.js +0 -73
  97. package/lib/common-crypto/CryptoBackend.js.map +0 -1
  98. package/lib/common-crypto/key-passphrase.d.ts +0 -14
  99. package/lib/common-crypto/key-passphrase.d.ts.map +0 -1
  100. package/lib/common-crypto/key-passphrase.js +0 -33
  101. package/lib/common-crypto/key-passphrase.js.map +0 -1
  102. package/lib/crypto/CrossSigning.d.ts +0 -184
  103. package/lib/crypto/CrossSigning.d.ts.map +0 -1
  104. package/lib/crypto/CrossSigning.js +0 -718
  105. package/lib/crypto/CrossSigning.js.map +0 -1
  106. package/lib/crypto/DeviceList.d.ts +0 -216
  107. package/lib/crypto/DeviceList.d.ts.map +0 -1
  108. package/lib/crypto/DeviceList.js +0 -892
  109. package/lib/crypto/DeviceList.js.map +0 -1
  110. package/lib/crypto/EncryptionSetup.d.ts +0 -152
  111. package/lib/crypto/EncryptionSetup.d.ts.map +0 -1
  112. package/lib/crypto/EncryptionSetup.js +0 -356
  113. package/lib/crypto/EncryptionSetup.js.map +0 -1
  114. package/lib/crypto/OlmDevice.d.ts +0 -457
  115. package/lib/crypto/OlmDevice.d.ts.map +0 -1
  116. package/lib/crypto/OlmDevice.js +0 -1241
  117. package/lib/crypto/OlmDevice.js.map +0 -1
  118. package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts +0 -109
  119. package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts.map +0 -1
  120. package/lib/crypto/OutgoingRoomKeyRequestManager.js +0 -415
  121. package/lib/crypto/OutgoingRoomKeyRequestManager.js.map +0 -1
  122. package/lib/crypto/RoomList.d.ts +0 -26
  123. package/lib/crypto/RoomList.d.ts.map +0 -1
  124. package/lib/crypto/RoomList.js +0 -71
  125. package/lib/crypto/RoomList.js.map +0 -1
  126. package/lib/crypto/SecretSharing.d.ts +0 -24
  127. package/lib/crypto/SecretSharing.d.ts.map +0 -1
  128. package/lib/crypto/SecretSharing.js +0 -194
  129. package/lib/crypto/SecretSharing.js.map +0 -1
  130. package/lib/crypto/SecretStorage.d.ts +0 -55
  131. package/lib/crypto/SecretStorage.d.ts.map +0 -1
  132. package/lib/crypto/SecretStorage.js +0 -118
  133. package/lib/crypto/SecretStorage.js.map +0 -1
  134. package/lib/crypto/aes.d.ts +0 -6
  135. package/lib/crypto/aes.d.ts.map +0 -1
  136. package/lib/crypto/aes.js +0 -24
  137. package/lib/crypto/aes.js.map +0 -1
  138. package/lib/crypto/algorithms/base.d.ts +0 -156
  139. package/lib/crypto/algorithms/base.d.ts.map +0 -1
  140. package/lib/crypto/algorithms/base.js +0 -187
  141. package/lib/crypto/algorithms/base.js.map +0 -1
  142. package/lib/crypto/algorithms/index.d.ts +0 -4
  143. package/lib/crypto/algorithms/index.d.ts.map +0 -1
  144. package/lib/crypto/algorithms/index.js +0 -20
  145. package/lib/crypto/algorithms/index.js.map +0 -1
  146. package/lib/crypto/algorithms/megolm.d.ts +0 -385
  147. package/lib/crypto/algorithms/megolm.d.ts.map +0 -1
  148. package/lib/crypto/algorithms/megolm.js +0 -1822
  149. package/lib/crypto/algorithms/megolm.js.map +0 -1
  150. package/lib/crypto/algorithms/olm.d.ts +0 -5
  151. package/lib/crypto/algorithms/olm.d.ts.map +0 -1
  152. package/lib/crypto/algorithms/olm.js +0 -299
  153. package/lib/crypto/algorithms/olm.js.map +0 -1
  154. package/lib/crypto/api.d.ts +0 -32
  155. package/lib/crypto/api.d.ts.map +0 -1
  156. package/lib/crypto/api.js +0 -22
  157. package/lib/crypto/api.js.map +0 -1
  158. package/lib/crypto/backup.d.ts +0 -227
  159. package/lib/crypto/backup.d.ts.map +0 -1
  160. package/lib/crypto/backup.js +0 -824
  161. package/lib/crypto/backup.js.map +0 -1
  162. package/lib/crypto/crypto.d.ts +0 -3
  163. package/lib/crypto/crypto.d.ts.map +0 -1
  164. package/lib/crypto/crypto.js +0 -19
  165. package/lib/crypto/crypto.js.map +0 -1
  166. package/lib/crypto/dehydration.d.ts +0 -34
  167. package/lib/crypto/dehydration.d.ts.map +0 -1
  168. package/lib/crypto/dehydration.js +0 -252
  169. package/lib/crypto/dehydration.js.map +0 -1
  170. package/lib/crypto/device-converter.d.ts +0 -9
  171. package/lib/crypto/device-converter.d.ts.map +0 -1
  172. package/lib/crypto/device-converter.js +0 -42
  173. package/lib/crypto/device-converter.js.map +0 -1
  174. package/lib/crypto/deviceinfo.d.ts +0 -99
  175. package/lib/crypto/deviceinfo.d.ts.map +0 -1
  176. package/lib/crypto/deviceinfo.js +0 -148
  177. package/lib/crypto/deviceinfo.js.map +0 -1
  178. package/lib/crypto/index.d.ts +0 -1209
  179. package/lib/crypto/index.d.ts.map +0 -1
  180. package/lib/crypto/index.js +0 -4097
  181. package/lib/crypto/index.js.map +0 -1
  182. package/lib/crypto/key_passphrase.d.ts +0 -14
  183. package/lib/crypto/key_passphrase.d.ts.map +0 -1
  184. package/lib/crypto/key_passphrase.js +0 -44
  185. package/lib/crypto/key_passphrase.js.map +0 -1
  186. package/lib/crypto/keybackup.d.ts +0 -18
  187. package/lib/crypto/keybackup.d.ts.map +0 -1
  188. package/lib/crypto/keybackup.js +0 -1
  189. package/lib/crypto/keybackup.js.map +0 -1
  190. package/lib/crypto/olmlib.d.ts +0 -129
  191. package/lib/crypto/olmlib.d.ts.map +0 -1
  192. package/lib/crypto/olmlib.js +0 -492
  193. package/lib/crypto/olmlib.js.map +0 -1
  194. package/lib/crypto/recoverykey.d.ts +0 -2
  195. package/lib/crypto/recoverykey.d.ts.map +0 -1
  196. package/lib/crypto/recoverykey.js +0 -19
  197. package/lib/crypto/recoverykey.js.map +0 -1
  198. package/lib/crypto/store/base.d.ts +0 -252
  199. package/lib/crypto/store/base.d.ts.map +0 -1
  200. package/lib/crypto/store/base.js +0 -64
  201. package/lib/crypto/store/base.js.map +0 -1
  202. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts +0 -187
  203. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts.map +0 -1
  204. package/lib/crypto/store/indexeddb-crypto-store-backend.js +0 -1145
  205. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +0 -1
  206. package/lib/crypto/store/indexeddb-crypto-store.d.ts +0 -432
  207. package/lib/crypto/store/indexeddb-crypto-store.d.ts.map +0 -1
  208. package/lib/crypto/store/indexeddb-crypto-store.js +0 -728
  209. package/lib/crypto/store/indexeddb-crypto-store.js.map +0 -1
  210. package/lib/crypto/store/localStorage-crypto-store.d.ts +0 -119
  211. package/lib/crypto/store/localStorage-crypto-store.d.ts.map +0 -1
  212. package/lib/crypto/store/localStorage-crypto-store.js +0 -531
  213. package/lib/crypto/store/localStorage-crypto-store.js.map +0 -1
  214. package/lib/crypto/store/memory-crypto-store.d.ts +0 -215
  215. package/lib/crypto/store/memory-crypto-store.d.ts.map +0 -1
  216. package/lib/crypto/store/memory-crypto-store.js +0 -622
  217. package/lib/crypto/store/memory-crypto-store.js.map +0 -1
  218. package/lib/crypto/verification/Base.d.ts +0 -105
  219. package/lib/crypto/verification/Base.d.ts.map +0 -1
  220. package/lib/crypto/verification/Base.js +0 -372
  221. package/lib/crypto/verification/Base.js.map +0 -1
  222. package/lib/crypto/verification/Error.d.ts +0 -35
  223. package/lib/crypto/verification/Error.d.ts.map +0 -1
  224. package/lib/crypto/verification/Error.js +0 -86
  225. package/lib/crypto/verification/Error.js.map +0 -1
  226. package/lib/crypto/verification/IllegalMethod.d.ts +0 -15
  227. package/lib/crypto/verification/IllegalMethod.d.ts.map +0 -1
  228. package/lib/crypto/verification/IllegalMethod.js +0 -43
  229. package/lib/crypto/verification/IllegalMethod.js.map +0 -1
  230. package/lib/crypto/verification/QRCode.d.ts +0 -51
  231. package/lib/crypto/verification/QRCode.d.ts.map +0 -1
  232. package/lib/crypto/verification/QRCode.js +0 -277
  233. package/lib/crypto/verification/QRCode.js.map +0 -1
  234. package/lib/crypto/verification/SAS.d.ts +0 -27
  235. package/lib/crypto/verification/SAS.d.ts.map +0 -1
  236. package/lib/crypto/verification/SAS.js +0 -485
  237. package/lib/crypto/verification/SAS.js.map +0 -1
  238. package/lib/crypto/verification/SASDecimal.d.ts +0 -8
  239. package/lib/crypto/verification/SASDecimal.d.ts.map +0 -1
  240. package/lib/crypto/verification/SASDecimal.js +0 -34
  241. package/lib/crypto/verification/SASDecimal.js.map +0 -1
  242. package/lib/crypto/verification/request/Channel.d.ts +0 -18
  243. package/lib/crypto/verification/request/Channel.d.ts.map +0 -1
  244. package/lib/crypto/verification/request/Channel.js +0 -1
  245. package/lib/crypto/verification/request/Channel.js.map +0 -1
  246. package/lib/crypto/verification/request/InRoomChannel.d.ts +0 -113
  247. package/lib/crypto/verification/request/InRoomChannel.d.ts.map +0 -1
  248. package/lib/crypto/verification/request/InRoomChannel.js +0 -351
  249. package/lib/crypto/verification/request/InRoomChannel.js.map +0 -1
  250. package/lib/crypto/verification/request/ToDeviceChannel.d.ts +0 -105
  251. package/lib/crypto/verification/request/ToDeviceChannel.d.ts.map +0 -1
  252. package/lib/crypto/verification/request/ToDeviceChannel.js +0 -328
  253. package/lib/crypto/verification/request/ToDeviceChannel.js.map +0 -1
  254. package/lib/crypto/verification/request/VerificationRequest.d.ts +0 -227
  255. package/lib/crypto/verification/request/VerificationRequest.d.ts.map +0 -1
  256. package/lib/crypto/verification/request/VerificationRequest.js +0 -937
  257. package/lib/crypto/verification/request/VerificationRequest.js.map +0 -1
  258. package/lib/crypto-api/CryptoEvent.d.ts +0 -69
  259. package/lib/crypto-api/CryptoEvent.d.ts.map +0 -1
  260. package/lib/crypto-api/CryptoEvent.js +0 -33
  261. package/lib/crypto-api/CryptoEvent.js.map +0 -1
  262. package/lib/crypto-api/CryptoEventHandlerMap.d.ts +0 -16
  263. package/lib/crypto-api/CryptoEventHandlerMap.d.ts.map +0 -1
  264. package/lib/crypto-api/CryptoEventHandlerMap.js +0 -22
  265. package/lib/crypto-api/CryptoEventHandlerMap.js.map +0 -1
  266. package/lib/crypto-api/index.d.ts +0 -978
  267. package/lib/crypto-api/index.d.ts.map +0 -1
  268. package/lib/crypto-api/index.js +0 -304
  269. package/lib/crypto-api/index.js.map +0 -1
  270. package/lib/crypto-api/key-passphrase.d.ts +0 -11
  271. package/lib/crypto-api/key-passphrase.d.ts.map +0 -1
  272. package/lib/crypto-api/key-passphrase.js +0 -51
  273. package/lib/crypto-api/key-passphrase.js.map +0 -1
  274. package/lib/crypto-api/keybackup.d.ts +0 -88
  275. package/lib/crypto-api/keybackup.d.ts.map +0 -1
  276. package/lib/crypto-api/keybackup.js +0 -1
  277. package/lib/crypto-api/keybackup.js.map +0 -1
  278. package/lib/crypto-api/recovery-key.d.ts +0 -11
  279. package/lib/crypto-api/recovery-key.d.ts.map +0 -1
  280. package/lib/crypto-api/recovery-key.js +0 -65
  281. package/lib/crypto-api/recovery-key.js.map +0 -1
  282. package/lib/crypto-api/verification.d.ts +0 -344
  283. package/lib/crypto-api/verification.d.ts.map +0 -1
  284. package/lib/crypto-api/verification.js +0 -91
  285. package/lib/crypto-api/verification.js.map +0 -1
  286. package/lib/rendezvous/MSC4108SignInWithQR.d.ts +0 -112
  287. package/lib/rendezvous/MSC4108SignInWithQR.d.ts.map +0 -1
  288. package/lib/rendezvous/MSC4108SignInWithQR.js +0 -392
  289. package/lib/rendezvous/MSC4108SignInWithQR.js.map +0 -1
  290. package/lib/rendezvous/RendezvousChannel.d.ts +0 -27
  291. package/lib/rendezvous/RendezvousChannel.d.ts.map +0 -1
  292. package/lib/rendezvous/RendezvousChannel.js +0 -1
  293. package/lib/rendezvous/RendezvousChannel.js.map +0 -1
  294. package/lib/rendezvous/RendezvousCode.d.ts +0 -9
  295. package/lib/rendezvous/RendezvousCode.d.ts.map +0 -1
  296. package/lib/rendezvous/RendezvousCode.js +0 -1
  297. package/lib/rendezvous/RendezvousCode.js.map +0 -1
  298. package/lib/rendezvous/RendezvousError.d.ts +0 -6
  299. package/lib/rendezvous/RendezvousError.d.ts.map +0 -1
  300. package/lib/rendezvous/RendezvousError.js +0 -23
  301. package/lib/rendezvous/RendezvousError.js.map +0 -1
  302. package/lib/rendezvous/RendezvousFailureReason.d.ts +0 -31
  303. package/lib/rendezvous/RendezvousFailureReason.d.ts.map +0 -1
  304. package/lib/rendezvous/RendezvousFailureReason.js +0 -38
  305. package/lib/rendezvous/RendezvousFailureReason.js.map +0 -1
  306. package/lib/rendezvous/RendezvousIntent.d.ts +0 -5
  307. package/lib/rendezvous/RendezvousIntent.d.ts.map +0 -1
  308. package/lib/rendezvous/RendezvousIntent.js +0 -22
  309. package/lib/rendezvous/RendezvousIntent.js.map +0 -1
  310. package/lib/rendezvous/RendezvousTransport.d.ts +0 -36
  311. package/lib/rendezvous/RendezvousTransport.d.ts.map +0 -1
  312. package/lib/rendezvous/RendezvousTransport.js +0 -1
  313. package/lib/rendezvous/RendezvousTransport.js.map +0 -1
  314. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts +0 -58
  315. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts.map +0 -1
  316. package/lib/rendezvous/channels/MSC4108SecureChannel.js +0 -246
  317. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +0 -1
  318. package/lib/rendezvous/channels/index.d.ts +0 -2
  319. package/lib/rendezvous/channels/index.d.ts.map +0 -1
  320. package/lib/rendezvous/channels/index.js +0 -18
  321. package/lib/rendezvous/channels/index.js.map +0 -1
  322. package/lib/rendezvous/index.d.ts +0 -10
  323. package/lib/rendezvous/index.d.ts.map +0 -1
  324. package/lib/rendezvous/index.js +0 -23
  325. package/lib/rendezvous/index.js.map +0 -1
  326. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +0 -61
  327. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts.map +0 -1
  328. package/lib/rendezvous/transports/MSC4108RendezvousSession.js +0 -253
  329. package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +0 -1
  330. package/lib/rendezvous/transports/index.d.ts +0 -2
  331. package/lib/rendezvous/transports/index.d.ts.map +0 -1
  332. package/lib/rendezvous/transports/index.js +0 -18
  333. package/lib/rendezvous/transports/index.js.map +0 -1
  334. package/lib/rust-crypto/CrossSigningIdentity.d.ts +0 -33
  335. package/lib/rust-crypto/CrossSigningIdentity.d.ts.map +0 -1
  336. package/lib/rust-crypto/CrossSigningIdentity.js +0 -157
  337. package/lib/rust-crypto/CrossSigningIdentity.js.map +0 -1
  338. package/lib/rust-crypto/DehydratedDeviceManager.d.ts +0 -98
  339. package/lib/rust-crypto/DehydratedDeviceManager.d.ts.map +0 -1
  340. package/lib/rust-crypto/DehydratedDeviceManager.js +0 -285
  341. package/lib/rust-crypto/DehydratedDeviceManager.js.map +0 -1
  342. package/lib/rust-crypto/KeyClaimManager.d.ts +0 -33
  343. package/lib/rust-crypto/KeyClaimManager.d.ts.map +0 -1
  344. package/lib/rust-crypto/KeyClaimManager.js +0 -82
  345. package/lib/rust-crypto/KeyClaimManager.js.map +0 -1
  346. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts +0 -43
  347. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts.map +0 -1
  348. package/lib/rust-crypto/OutgoingRequestProcessor.js +0 -195
  349. package/lib/rust-crypto/OutgoingRequestProcessor.js.map +0 -1
  350. package/lib/rust-crypto/OutgoingRequestsManager.d.ts +0 -47
  351. package/lib/rust-crypto/OutgoingRequestsManager.d.ts.map +0 -1
  352. package/lib/rust-crypto/OutgoingRequestsManager.js +0 -148
  353. package/lib/rust-crypto/OutgoingRequestsManager.js.map +0 -1
  354. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +0 -120
  355. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts.map +0 -1
  356. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +0 -467
  357. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +0 -1
  358. package/lib/rust-crypto/RoomEncryptor.d.ts +0 -98
  359. package/lib/rust-crypto/RoomEncryptor.d.ts.map +0 -1
  360. package/lib/rust-crypto/RoomEncryptor.js +0 -299
  361. package/lib/rust-crypto/RoomEncryptor.js.map +0 -1
  362. package/lib/rust-crypto/backup.d.ts +0 -254
  363. package/lib/rust-crypto/backup.d.ts.map +0 -1
  364. package/lib/rust-crypto/backup.js +0 -837
  365. package/lib/rust-crypto/backup.js.map +0 -1
  366. package/lib/rust-crypto/constants.d.ts +0 -3
  367. package/lib/rust-crypto/constants.d.ts.map +0 -1
  368. package/lib/rust-crypto/constants.js +0 -19
  369. package/lib/rust-crypto/constants.js.map +0 -1
  370. package/lib/rust-crypto/device-converter.d.ts +0 -28
  371. package/lib/rust-crypto/device-converter.d.ts.map +0 -1
  372. package/lib/rust-crypto/device-converter.js +0 -123
  373. package/lib/rust-crypto/device-converter.js.map +0 -1
  374. package/lib/rust-crypto/index.d.ts +0 -61
  375. package/lib/rust-crypto/index.d.ts.map +0 -1
  376. package/lib/rust-crypto/index.js +0 -152
  377. package/lib/rust-crypto/index.js.map +0 -1
  378. package/lib/rust-crypto/libolm_migration.d.ts +0 -81
  379. package/lib/rust-crypto/libolm_migration.d.ts.map +0 -1
  380. package/lib/rust-crypto/libolm_migration.js +0 -459
  381. package/lib/rust-crypto/libolm_migration.js.map +0 -1
  382. package/lib/rust-crypto/rust-crypto.d.ts +0 -556
  383. package/lib/rust-crypto/rust-crypto.d.ts.map +0 -1
  384. package/lib/rust-crypto/rust-crypto.js +0 -2016
  385. package/lib/rust-crypto/rust-crypto.js.map +0 -1
  386. package/lib/rust-crypto/secret-storage.d.ts +0 -22
  387. package/lib/rust-crypto/secret-storage.d.ts.map +0 -1
  388. package/lib/rust-crypto/secret-storage.js +0 -63
  389. package/lib/rust-crypto/secret-storage.js.map +0 -1
  390. package/lib/rust-crypto/verification.d.ts +0 -319
  391. package/lib/rust-crypto/verification.d.ts.map +0 -1
  392. package/lib/rust-crypto/verification.js +0 -816
  393. package/lib/rust-crypto/verification.js.map +0 -1
  394. package/lib/secret-storage.d.ts +0 -370
  395. package/lib/secret-storage.d.ts.map +0 -1
  396. package/lib/secret-storage.js +0 -466
  397. package/lib/secret-storage.js.map +0 -1
  398. package/lib/utils/decryptAESSecretStorageItem.d.ts +0 -12
  399. package/lib/utils/decryptAESSecretStorageItem.d.ts.map +0 -1
  400. package/lib/utils/decryptAESSecretStorageItem.js +0 -50
  401. package/lib/utils/decryptAESSecretStorageItem.js.map +0 -1
  402. package/lib/utils/encryptAESSecretStorageItem.d.ts +0 -16
  403. package/lib/utils/encryptAESSecretStorageItem.d.ts.map +0 -1
  404. package/lib/utils/encryptAESSecretStorageItem.js +0 -68
  405. package/lib/utils/encryptAESSecretStorageItem.js.map +0 -1
  406. package/lib/utils/internal/deriveKeys.d.ts +0 -10
  407. package/lib/utils/internal/deriveKeys.d.ts.map +0 -1
  408. package/lib/utils/internal/deriveKeys.js +0 -60
  409. package/lib/utils/internal/deriveKeys.js.map +0 -1
  410. package/src/@types/AESEncryptedSecretStoragePayload.ts +0 -29
  411. package/src/@types/crypto.ts +0 -73
  412. package/src/@types/matrix-sdk-crypto-wasm.d.ts +0 -44
  413. package/src/common-crypto/CryptoBackend.ts +0 -302
  414. package/src/common-crypto/README.md +0 -4
  415. package/src/common-crypto/key-passphrase.ts +0 -43
  416. package/src/crypto/CrossSigning.ts +0 -773
  417. package/src/crypto/DeviceList.ts +0 -989
  418. package/src/crypto/EncryptionSetup.ts +0 -351
  419. package/src/crypto/OlmDevice.ts +0 -1500
  420. package/src/crypto/OutgoingRoomKeyRequestManager.ts +0 -485
  421. package/src/crypto/RoomList.ts +0 -70
  422. package/src/crypto/SecretSharing.ts +0 -240
  423. package/src/crypto/SecretStorage.ts +0 -136
  424. package/src/crypto/aes.ts +0 -23
  425. package/src/crypto/algorithms/base.ts +0 -236
  426. package/src/crypto/algorithms/index.ts +0 -20
  427. package/src/crypto/algorithms/megolm.ts +0 -2216
  428. package/src/crypto/algorithms/olm.ts +0 -381
  429. package/src/crypto/api.ts +0 -70
  430. package/src/crypto/backup.ts +0 -922
  431. package/src/crypto/crypto.ts +0 -18
  432. package/src/crypto/dehydration.ts +0 -272
  433. package/src/crypto/device-converter.ts +0 -45
  434. package/src/crypto/deviceinfo.ts +0 -158
  435. package/src/crypto/index.ts +0 -4414
  436. package/src/crypto/key_passphrase.ts +0 -42
  437. package/src/crypto/keybackup.ts +0 -47
  438. package/src/crypto/olmlib.ts +0 -539
  439. package/src/crypto/recoverykey.ts +0 -18
  440. package/src/crypto/store/base.ts +0 -348
  441. package/src/crypto/store/indexeddb-crypto-store-backend.ts +0 -1250
  442. package/src/crypto/store/indexeddb-crypto-store.ts +0 -845
  443. package/src/crypto/store/localStorage-crypto-store.ts +0 -579
  444. package/src/crypto/store/memory-crypto-store.ts +0 -680
  445. package/src/crypto/verification/Base.ts +0 -409
  446. package/src/crypto/verification/Error.ts +0 -76
  447. package/src/crypto/verification/IllegalMethod.ts +0 -50
  448. package/src/crypto/verification/QRCode.ts +0 -310
  449. package/src/crypto/verification/SAS.ts +0 -494
  450. package/src/crypto/verification/SASDecimal.ts +0 -37
  451. package/src/crypto/verification/request/Channel.ts +0 -34
  452. package/src/crypto/verification/request/InRoomChannel.ts +0 -371
  453. package/src/crypto/verification/request/ToDeviceChannel.ts +0 -354
  454. package/src/crypto/verification/request/VerificationRequest.ts +0 -976
  455. package/src/crypto-api/CryptoEvent.ts +0 -93
  456. package/src/crypto-api/CryptoEventHandlerMap.ts +0 -32
  457. package/src/crypto-api/index.ts +0 -1175
  458. package/src/crypto-api/key-passphrase.ts +0 -58
  459. package/src/crypto-api/keybackup.ts +0 -115
  460. package/src/crypto-api/recovery-key.ts +0 -69
  461. package/src/crypto-api/verification.ts +0 -408
  462. package/src/rendezvous/MSC4108SignInWithQR.ts +0 -444
  463. package/src/rendezvous/RendezvousChannel.ts +0 -48
  464. package/src/rendezvous/RendezvousCode.ts +0 -25
  465. package/src/rendezvous/RendezvousError.ts +0 -26
  466. package/src/rendezvous/RendezvousFailureReason.ts +0 -49
  467. package/src/rendezvous/RendezvousIntent.ts +0 -20
  468. package/src/rendezvous/RendezvousTransport.ts +0 -58
  469. package/src/rendezvous/channels/MSC4108SecureChannel.ts +0 -270
  470. package/src/rendezvous/channels/index.ts +0 -17
  471. package/src/rendezvous/index.ts +0 -25
  472. package/src/rendezvous/transports/MSC4108RendezvousSession.ts +0 -270
  473. package/src/rendezvous/transports/index.ts +0 -17
  474. package/src/rust-crypto/CrossSigningIdentity.ts +0 -183
  475. package/src/rust-crypto/DehydratedDeviceManager.ts +0 -306
  476. package/src/rust-crypto/KeyClaimManager.ts +0 -86
  477. package/src/rust-crypto/OutgoingRequestProcessor.ts +0 -236
  478. package/src/rust-crypto/OutgoingRequestsManager.ts +0 -143
  479. package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +0 -501
  480. package/src/rust-crypto/RoomEncryptor.ts +0 -352
  481. package/src/rust-crypto/backup.ts +0 -881
  482. package/src/rust-crypto/constants.ts +0 -18
  483. package/src/rust-crypto/device-converter.ts +0 -128
  484. package/src/rust-crypto/index.ts +0 -237
  485. package/src/rust-crypto/libolm_migration.ts +0 -530
  486. package/src/rust-crypto/rust-crypto.ts +0 -2205
  487. package/src/rust-crypto/secret-storage.ts +0 -60
  488. package/src/rust-crypto/verification.ts +0 -830
  489. package/src/secret-storage.ts +0 -693
  490. package/src/utils/decryptAESSecretStorageItem.ts +0 -54
  491. package/src/utils/encryptAESSecretStorageItem.ts +0 -73
  492. package/src/utils/internal/deriveKeys.ts +0 -63
@@ -1,328 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- /*
4
- Copyright 2018 New Vector Ltd
5
- Copyright 2019 The Matrix.org Foundation C.I.C.
6
-
7
- Licensed under the Apache License, Version 2.0 (the "License");
8
- you may not use this file except in compliance with the License.
9
- You may obtain a copy of the License at
10
-
11
- http://www.apache.org/licenses/LICENSE-2.0
12
-
13
- Unless required by applicable law or agreed to in writing, software
14
- distributed under the License is distributed on an "AS IS" BASIS,
15
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- See the License for the specific language governing permissions and
17
- limitations under the License.
18
- */
19
-
20
- import { randomString } from "../../../randomstring.js";
21
- import { logger } from "../../../logger.js";
22
- import { CANCEL_TYPE, PHASE_STARTED, PHASE_READY, REQUEST_TYPE, READY_TYPE, START_TYPE, VerificationRequest } from "./VerificationRequest.js";
23
- import { errorFromEvent, newUnexpectedMessageError } from "../Error.js";
24
- import { MatrixEvent } from "../../../models/event.js";
25
- /**
26
- * A key verification channel that sends verification events over to_device messages.
27
- * Generates its own transaction ids.
28
- */
29
- export class ToDeviceChannel {
30
- // userId and devices of user we're about to verify
31
- constructor(client, userId, devices, transactionId, deviceId) {
32
- this.client = client;
33
- this.userId = userId;
34
- this.devices = devices;
35
- this.transactionId = transactionId;
36
- this.deviceId = deviceId;
37
- _defineProperty(this, "request", void 0);
38
- }
39
- isToDevices(devices) {
40
- if (devices.length === this.devices.length) {
41
- for (var device of devices) {
42
- if (!this.devices.includes(device)) {
43
- return false;
44
- }
45
- }
46
- return true;
47
- } else {
48
- return false;
49
- }
50
- }
51
- static getEventType(event) {
52
- return event.getType();
53
- }
54
-
55
- /**
56
- * Extract the transaction id used by a given key verification event, if any
57
- * @param event - the event
58
- * @returns the transaction id
59
- */
60
- static getTransactionId(event) {
61
- var content = event.getContent();
62
- return content && content.transaction_id;
63
- }
64
-
65
- /**
66
- * Checks whether the given event type should be allowed to initiate a new VerificationRequest over this channel
67
- * @param type - the event type to check
68
- * @returns boolean flag
69
- */
70
- static canCreateRequest(type) {
71
- return type === REQUEST_TYPE || type === START_TYPE;
72
- }
73
- canCreateRequest(type) {
74
- return ToDeviceChannel.canCreateRequest(type);
75
- }
76
-
77
- /**
78
- * Checks whether this event is a well-formed key verification event.
79
- * This only does checks that don't rely on the current state of a potentially already channel
80
- * so we can prevent channels being created by invalid events.
81
- * `handleEvent` can do more checks and choose to ignore invalid events.
82
- * @param event - the event to validate
83
- * @param client - the client to get the current user and device id from
84
- * @returns whether the event is valid and should be passed to handleEvent
85
- */
86
- static validateEvent(event, client) {
87
- if (event.isCancelled()) {
88
- logger.warn("Ignoring flagged verification request from " + event.getSender());
89
- return false;
90
- }
91
- var content = event.getContent();
92
- if (!content) {
93
- logger.warn("ToDeviceChannel.validateEvent: invalid: no content");
94
- return false;
95
- }
96
- if (!content.transaction_id) {
97
- logger.warn("ToDeviceChannel.validateEvent: invalid: no transaction_id");
98
- return false;
99
- }
100
- var type = event.getType();
101
- if (type === REQUEST_TYPE) {
102
- if (!Number.isFinite(content.timestamp)) {
103
- logger.warn("ToDeviceChannel.validateEvent: invalid: no timestamp");
104
- return false;
105
- }
106
- if (event.getSender() === client.getUserId() && content.from_device == client.getDeviceId()) {
107
- // ignore requests from ourselves, because it doesn't make sense for a
108
- // device to verify itself
109
- logger.warn("ToDeviceChannel.validateEvent: invalid: from own device");
110
- return false;
111
- }
112
- }
113
- return VerificationRequest.validateEvent(type, event, client);
114
- }
115
-
116
- /**
117
- * @param event - the event to get the timestamp of
118
- * @returns the timestamp when the event was sent
119
- */
120
- getTimestamp(event) {
121
- var content = event.getContent();
122
- return content && content.timestamp;
123
- }
124
-
125
- /**
126
- * Changes the state of the channel, request, and verifier in response to a key verification event.
127
- * @param event - to handle
128
- * @param request - the request to forward handling to
129
- * @param isLiveEvent - whether this is an even received through sync or not
130
- * @returns a promise that resolves when any requests as an answer to the passed-in event are sent.
131
- */
132
- handleEvent(event, request) {
133
- var _arguments = arguments,
134
- _this = this;
135
- return _asyncToGenerator(function* () {
136
- var isLiveEvent = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : false;
137
- var type = event.getType();
138
- var content = event.getContent();
139
- if (type === REQUEST_TYPE || type === READY_TYPE || type === START_TYPE) {
140
- if (!_this.transactionId) {
141
- _this.transactionId = content.transaction_id;
142
- }
143
- var _deviceId = content.from_device;
144
- // adopt deviceId if not set before and valid
145
- if (!_this.deviceId && _this.devices.includes(_deviceId)) {
146
- _this.deviceId = _deviceId;
147
- }
148
- // if no device id or different from adopted one, cancel with sender
149
- if (!_this.deviceId || _this.deviceId !== _deviceId) {
150
- // also check that message came from the device we sent the request to earlier on
151
- // and do send a cancel message to that device
152
- // (but don't cancel the request for the device we should be talking to)
153
- var cancelContent = _this.completeContent(CANCEL_TYPE, errorFromEvent(newUnexpectedMessageError()));
154
- return _this.sendToDevices(CANCEL_TYPE, cancelContent, [_deviceId]);
155
- }
156
- }
157
- var wasStarted = request.phase === PHASE_STARTED || request.phase === PHASE_READY;
158
- yield request.handleEvent(event.getType(), event, isLiveEvent, false, false);
159
- var isStarted = request.phase === PHASE_STARTED || request.phase === PHASE_READY;
160
- var isAcceptingEvent = type === START_TYPE || type === READY_TYPE;
161
- // the request has picked a ready or start event, tell the other devices about it
162
- if (isAcceptingEvent && !wasStarted && isStarted && _this.deviceId) {
163
- var nonChosenDevices = _this.devices.filter(d => d !== _this.deviceId && d !== _this.client.getDeviceId());
164
- if (nonChosenDevices.length) {
165
- var message = _this.completeContent(CANCEL_TYPE, {
166
- code: "m.accepted",
167
- reason: "Verification request accepted by another device"
168
- });
169
- yield _this.sendToDevices(CANCEL_TYPE, message, nonChosenDevices);
170
- }
171
- }
172
- })();
173
- }
174
-
175
- /**
176
- * See {@link InRoomChannel#completedContentFromEvent} for why this is needed.
177
- * @param event - the received event
178
- * @returns the content object
179
- */
180
- completedContentFromEvent(event) {
181
- return event.getContent();
182
- }
183
-
184
- /**
185
- * Add all the fields to content needed for sending it over this channel.
186
- * This is public so verification methods (SAS uses this) can get the exact
187
- * content that will be sent independent of the used channel,
188
- * as they need to calculate the hash of it.
189
- * @param type - the event type
190
- * @param content - the (incomplete) content
191
- * @returns the complete content, as it will be sent.
192
- */
193
- completeContent(type, content) {
194
- // make a copy
195
- content = Object.assign({}, content);
196
- if (this.transactionId) {
197
- content.transaction_id = this.transactionId;
198
- }
199
- if (type === REQUEST_TYPE || type === READY_TYPE || type === START_TYPE) {
200
- content.from_device = this.client.getDeviceId();
201
- }
202
- if (type === REQUEST_TYPE) {
203
- content.timestamp = Date.now();
204
- }
205
- return content;
206
- }
207
-
208
- /**
209
- * Send an event over the channel with the content not having gone through `completeContent`.
210
- * @param type - the event type
211
- * @param uncompletedContent - the (incomplete) content
212
- * @returns the promise of the request
213
- */
214
- send(type) {
215
- var uncompletedContent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
216
- // create transaction id when sending request
217
- if ((type === REQUEST_TYPE || type === START_TYPE) && !this.transactionId) {
218
- this.transactionId = ToDeviceChannel.makeTransactionId();
219
- }
220
- var content = this.completeContent(type, uncompletedContent);
221
- return this.sendCompleted(type, content);
222
- }
223
-
224
- /**
225
- * Send an event over the channel with the content having gone through `completeContent` already.
226
- * @param type - the event type
227
- * @returns the promise of the request
228
- */
229
- sendCompleted(type, content) {
230
- var _this2 = this;
231
- return _asyncToGenerator(function* () {
232
- var result;
233
- if (type === REQUEST_TYPE || type === CANCEL_TYPE && !_this2.deviceId) {
234
- result = yield _this2.sendToDevices(type, content, _this2.devices);
235
- } else {
236
- result = yield _this2.sendToDevices(type, content, [_this2.deviceId]);
237
- }
238
- // the VerificationRequest state machine requires remote echos of the event
239
- // the client sends itself, so we fake this for to_device messages
240
- var remoteEchoEvent = new MatrixEvent({
241
- sender: _this2.client.getUserId(),
242
- content,
243
- type
244
- });
245
- yield _this2.request.handleEvent(type, remoteEchoEvent, /*isLiveEvent=*/true, /*isRemoteEcho=*/true, /*isSentByUs=*/true);
246
- return result;
247
- })();
248
- }
249
- sendToDevices(type, content, devices) {
250
- var _this3 = this;
251
- return _asyncToGenerator(function* () {
252
- if (devices.length) {
253
- var deviceMessages = new Map();
254
- for (var _deviceId2 of devices) {
255
- deviceMessages.set(_deviceId2, content);
256
- }
257
- yield _this3.client.sendToDevice(type, new Map([[_this3.userId, deviceMessages]]));
258
- }
259
- })();
260
- }
261
-
262
- /**
263
- * Allow Crypto module to create and know the transaction id before the .start event gets sent.
264
- * @returns the transaction id
265
- */
266
- static makeTransactionId() {
267
- return randomString(32);
268
- }
269
- }
270
- export class ToDeviceRequests {
271
- constructor() {
272
- _defineProperty(this, "requestsByUserId", new Map());
273
- }
274
- getRequest(event) {
275
- return this.getRequestBySenderAndTxnId(event.getSender(), ToDeviceChannel.getTransactionId(event));
276
- }
277
- getRequestByChannel(channel) {
278
- return this.getRequestBySenderAndTxnId(channel.userId, channel.transactionId);
279
- }
280
- getRequestBySenderAndTxnId(sender, txnId) {
281
- var requestsByTxnId = this.requestsByUserId.get(sender);
282
- if (requestsByTxnId) {
283
- return requestsByTxnId.get(txnId);
284
- }
285
- }
286
- setRequest(event, request) {
287
- this.setRequestBySenderAndTxnId(event.getSender(), ToDeviceChannel.getTransactionId(event), request);
288
- }
289
- setRequestByChannel(channel, request) {
290
- this.setRequestBySenderAndTxnId(channel.userId, channel.transactionId, request);
291
- }
292
- setRequestBySenderAndTxnId(sender, txnId, request) {
293
- var requestsByTxnId = this.requestsByUserId.get(sender);
294
- if (!requestsByTxnId) {
295
- requestsByTxnId = new Map();
296
- this.requestsByUserId.set(sender, requestsByTxnId);
297
- }
298
- requestsByTxnId.set(txnId, request);
299
- }
300
- removeRequest(event) {
301
- var userId = event.getSender();
302
- var requestsByTxnId = this.requestsByUserId.get(userId);
303
- if (requestsByTxnId) {
304
- requestsByTxnId.delete(ToDeviceChannel.getTransactionId(event));
305
- if (requestsByTxnId.size === 0) {
306
- this.requestsByUserId.delete(userId);
307
- }
308
- }
309
- }
310
- findRequestInProgress(userId, devices) {
311
- var requestsByTxnId = this.requestsByUserId.get(userId);
312
- if (requestsByTxnId) {
313
- for (var request of requestsByTxnId.values()) {
314
- if (request.pending && request.channel.isToDevices(devices)) {
315
- return request;
316
- }
317
- }
318
- }
319
- }
320
- getRequestsInProgress(userId) {
321
- var requestsByTxnId = this.requestsByUserId.get(userId);
322
- if (requestsByTxnId) {
323
- return Array.from(requestsByTxnId.values()).filter(r => r.pending);
324
- }
325
- return [];
326
- }
327
- }
328
- //# sourceMappingURL=ToDeviceChannel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToDeviceChannel.js","names":["randomString","logger","CANCEL_TYPE","PHASE_STARTED","PHASE_READY","REQUEST_TYPE","READY_TYPE","START_TYPE","VerificationRequest","errorFromEvent","newUnexpectedMessageError","MatrixEvent","ToDeviceChannel","constructor","client","userId","devices","transactionId","deviceId","_defineProperty","isToDevices","length","device","includes","getEventType","event","getType","getTransactionId","content","getContent","transaction_id","canCreateRequest","type","validateEvent","isCancelled","warn","getSender","Number","isFinite","timestamp","getUserId","from_device","getDeviceId","getTimestamp","handleEvent","request","_arguments","arguments","_this","_asyncToGenerator","isLiveEvent","undefined","cancelContent","completeContent","sendToDevices","wasStarted","phase","isStarted","isAcceptingEvent","nonChosenDevices","filter","d","message","code","reason","completedContentFromEvent","Object","assign","Date","now","send","uncompletedContent","makeTransactionId","sendCompleted","_this2","result","remoteEchoEvent","sender","_this3","deviceMessages","Map","set","sendToDevice","ToDeviceRequests","getRequest","getRequestBySenderAndTxnId","getRequestByChannel","channel","txnId","requestsByTxnId","requestsByUserId","get","setRequest","setRequestBySenderAndTxnId","setRequestByChannel","removeRequest","delete","size","findRequestInProgress","values","pending","getRequestsInProgress","Array","from","r"],"sources":["../../../../src/crypto/verification/request/ToDeviceChannel.ts"],"sourcesContent":["/*\nCopyright 2018 New Vector Ltd\nCopyright 2019 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 { randomString } from \"../../../randomstring.ts\";\nimport { logger } from \"../../../logger.ts\";\nimport {\n CANCEL_TYPE,\n PHASE_STARTED,\n PHASE_READY,\n REQUEST_TYPE,\n READY_TYPE,\n START_TYPE,\n VerificationRequest,\n} from \"./VerificationRequest.ts\";\nimport { errorFromEvent, newUnexpectedMessageError } from \"../Error.ts\";\nimport { MatrixEvent } from \"../../../models/event.ts\";\nimport { IVerificationChannel } from \"./Channel.ts\";\nimport { MatrixClient } from \"../../../client.ts\";\nimport { IRequestsMap } from \"../../index.ts\";\n\nexport type Request = VerificationRequest<ToDeviceChannel>;\n\n/**\n * A key verification channel that sends verification events over to_device messages.\n * Generates its own transaction ids.\n */\nexport class ToDeviceChannel implements IVerificationChannel {\n public request?: VerificationRequest;\n\n // userId and devices of user we're about to verify\n public constructor(\n private readonly client: MatrixClient,\n public readonly userId: string,\n private readonly devices: string[],\n public transactionId?: string,\n public deviceId?: string,\n ) {}\n\n public isToDevices(devices: string[]): boolean {\n if (devices.length === this.devices.length) {\n for (const device of devices) {\n if (!this.devices.includes(device)) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n }\n\n public static getEventType(event: MatrixEvent): string {\n return event.getType();\n }\n\n /**\n * Extract the transaction id used by a given key verification event, if any\n * @param event - the event\n * @returns the transaction id\n */\n public static getTransactionId(event: MatrixEvent): string {\n const content = event.getContent();\n return content && content.transaction_id;\n }\n\n /**\n * Checks whether the given event type should be allowed to initiate a new VerificationRequest over this channel\n * @param type - the event type to check\n * @returns boolean flag\n */\n public static canCreateRequest(type: string): boolean {\n return type === REQUEST_TYPE || type === START_TYPE;\n }\n\n public canCreateRequest(type: string): boolean {\n return ToDeviceChannel.canCreateRequest(type);\n }\n\n /**\n * Checks whether this event is a well-formed key verification event.\n * This only does checks that don't rely on the current state of a potentially already channel\n * so we can prevent channels being created by invalid events.\n * `handleEvent` can do more checks and choose to ignore invalid events.\n * @param event - the event to validate\n * @param client - the client to get the current user and device id from\n * @returns whether the event is valid and should be passed to handleEvent\n */\n public static validateEvent(event: MatrixEvent, client: MatrixClient): boolean {\n if (event.isCancelled()) {\n logger.warn(\"Ignoring flagged verification request from \" + event.getSender());\n return false;\n }\n const content = event.getContent();\n if (!content) {\n logger.warn(\"ToDeviceChannel.validateEvent: invalid: no content\");\n return false;\n }\n\n if (!content.transaction_id) {\n logger.warn(\"ToDeviceChannel.validateEvent: invalid: no transaction_id\");\n return false;\n }\n\n const type = event.getType();\n\n if (type === REQUEST_TYPE) {\n if (!Number.isFinite(content.timestamp)) {\n logger.warn(\"ToDeviceChannel.validateEvent: invalid: no timestamp\");\n return false;\n }\n if (event.getSender() === client.getUserId() && content.from_device == client.getDeviceId()) {\n // ignore requests from ourselves, because it doesn't make sense for a\n // device to verify itself\n logger.warn(\"ToDeviceChannel.validateEvent: invalid: from own device\");\n return false;\n }\n }\n\n return VerificationRequest.validateEvent(type, event, client);\n }\n\n /**\n * @param event - the event to get the timestamp of\n * @returns the timestamp when the event was sent\n */\n public getTimestamp(event: MatrixEvent): number {\n const content = event.getContent();\n return content && content.timestamp;\n }\n\n /**\n * Changes the state of the channel, request, and verifier in response to a key verification event.\n * @param event - to handle\n * @param request - the request to forward handling to\n * @param isLiveEvent - whether this is an even received through sync or not\n * @returns a promise that resolves when any requests as an answer to the passed-in event are sent.\n */\n public async handleEvent(event: MatrixEvent, request: Request, isLiveEvent = false): Promise<void> {\n const type = event.getType();\n const content = event.getContent();\n if (type === REQUEST_TYPE || type === READY_TYPE || type === START_TYPE) {\n if (!this.transactionId) {\n this.transactionId = content.transaction_id;\n }\n const deviceId = content.from_device;\n // adopt deviceId if not set before and valid\n if (!this.deviceId && this.devices.includes(deviceId)) {\n this.deviceId = deviceId;\n }\n // if no device id or different from adopted one, cancel with sender\n if (!this.deviceId || this.deviceId !== deviceId) {\n // also check that message came from the device we sent the request to earlier on\n // and do send a cancel message to that device\n // (but don't cancel the request for the device we should be talking to)\n const cancelContent = this.completeContent(CANCEL_TYPE, errorFromEvent(newUnexpectedMessageError()));\n return this.sendToDevices(CANCEL_TYPE, cancelContent, [deviceId]);\n }\n }\n const wasStarted = request.phase === PHASE_STARTED || request.phase === PHASE_READY;\n\n await request.handleEvent(event.getType(), event, isLiveEvent, false, false);\n\n const isStarted = request.phase === PHASE_STARTED || request.phase === PHASE_READY;\n\n const isAcceptingEvent = type === START_TYPE || type === READY_TYPE;\n // the request has picked a ready or start event, tell the other devices about it\n if (isAcceptingEvent && !wasStarted && isStarted && this.deviceId) {\n const nonChosenDevices = this.devices.filter((d) => d !== this.deviceId && d !== this.client.getDeviceId());\n if (nonChosenDevices.length) {\n const message = this.completeContent(CANCEL_TYPE, {\n code: \"m.accepted\",\n reason: \"Verification request accepted by another device\",\n });\n await this.sendToDevices(CANCEL_TYPE, message, nonChosenDevices);\n }\n }\n }\n\n /**\n * See {@link InRoomChannel#completedContentFromEvent} for why this is needed.\n * @param event - the received event\n * @returns the content object\n */\n public completedContentFromEvent(event: MatrixEvent): Record<string, any> {\n return event.getContent();\n }\n\n /**\n * Add all the fields to content needed for sending it over this channel.\n * This is public so verification methods (SAS uses this) can get the exact\n * content that will be sent independent of the used channel,\n * as they need to calculate the hash of it.\n * @param type - the event type\n * @param content - the (incomplete) content\n * @returns the complete content, as it will be sent.\n */\n public completeContent(type: string, content: Record<string, any>): Record<string, any> {\n // make a copy\n content = Object.assign({}, content);\n if (this.transactionId) {\n content.transaction_id = this.transactionId;\n }\n if (type === REQUEST_TYPE || type === READY_TYPE || type === START_TYPE) {\n content.from_device = this.client.getDeviceId();\n }\n if (type === REQUEST_TYPE) {\n content.timestamp = Date.now();\n }\n return content;\n }\n\n /**\n * Send an event over the channel with the content not having gone through `completeContent`.\n * @param type - the event type\n * @param uncompletedContent - the (incomplete) content\n * @returns the promise of the request\n */\n public send(type: string, uncompletedContent: Record<string, any> = {}): Promise<void> {\n // create transaction id when sending request\n if ((type === REQUEST_TYPE || type === START_TYPE) && !this.transactionId) {\n this.transactionId = ToDeviceChannel.makeTransactionId();\n }\n const content = this.completeContent(type, uncompletedContent);\n return this.sendCompleted(type, content);\n }\n\n /**\n * Send an event over the channel with the content having gone through `completeContent` already.\n * @param type - the event type\n * @returns the promise of the request\n */\n public async sendCompleted(type: string, content: Record<string, any>): Promise<void> {\n let result;\n if (type === REQUEST_TYPE || (type === CANCEL_TYPE && !this.deviceId)) {\n result = await this.sendToDevices(type, content, this.devices);\n } else {\n result = await this.sendToDevices(type, content, [this.deviceId!]);\n }\n // the VerificationRequest state machine requires remote echos of the event\n // the client sends itself, so we fake this for to_device messages\n const remoteEchoEvent = new MatrixEvent({\n sender: this.client.getUserId()!,\n content,\n type,\n });\n await this.request!.handleEvent(\n type,\n remoteEchoEvent,\n /*isLiveEvent=*/ true,\n /*isRemoteEcho=*/ true,\n /*isSentByUs=*/ true,\n );\n return result;\n }\n\n private async sendToDevices(type: string, content: Record<string, any>, devices: string[]): Promise<void> {\n if (devices.length) {\n const deviceMessages: Map<string, Record<string, any>> = new Map();\n for (const deviceId of devices) {\n deviceMessages.set(deviceId, content);\n }\n\n await this.client.sendToDevice(type, new Map([[this.userId, deviceMessages]]));\n }\n }\n\n /**\n * Allow Crypto module to create and know the transaction id before the .start event gets sent.\n * @returns the transaction id\n */\n public static makeTransactionId(): string {\n return randomString(32);\n }\n}\n\nexport class ToDeviceRequests implements IRequestsMap {\n private requestsByUserId = new Map<string, Map<string, Request>>();\n\n public getRequest(event: MatrixEvent): Request | undefined {\n return this.getRequestBySenderAndTxnId(event.getSender()!, ToDeviceChannel.getTransactionId(event));\n }\n\n public getRequestByChannel(channel: ToDeviceChannel): Request | undefined {\n return this.getRequestBySenderAndTxnId(channel.userId, channel.transactionId!);\n }\n\n public getRequestBySenderAndTxnId(sender: string, txnId: string): Request | undefined {\n const requestsByTxnId = this.requestsByUserId.get(sender);\n if (requestsByTxnId) {\n return requestsByTxnId.get(txnId);\n }\n }\n\n public setRequest(event: MatrixEvent, request: Request): void {\n this.setRequestBySenderAndTxnId(event.getSender()!, ToDeviceChannel.getTransactionId(event), request);\n }\n\n public setRequestByChannel(channel: ToDeviceChannel, request: Request): void {\n this.setRequestBySenderAndTxnId(channel.userId, channel.transactionId!, request);\n }\n\n public setRequestBySenderAndTxnId(sender: string, txnId: string, request: Request): void {\n let requestsByTxnId = this.requestsByUserId.get(sender);\n if (!requestsByTxnId) {\n requestsByTxnId = new Map();\n this.requestsByUserId.set(sender, requestsByTxnId);\n }\n requestsByTxnId.set(txnId, request);\n }\n\n public removeRequest(event: MatrixEvent): void {\n const userId = event.getSender()!;\n const requestsByTxnId = this.requestsByUserId.get(userId);\n if (requestsByTxnId) {\n requestsByTxnId.delete(ToDeviceChannel.getTransactionId(event));\n if (requestsByTxnId.size === 0) {\n this.requestsByUserId.delete(userId);\n }\n }\n }\n\n public findRequestInProgress(userId: string, devices: string[]): Request | undefined {\n const requestsByTxnId = this.requestsByUserId.get(userId);\n if (requestsByTxnId) {\n for (const request of requestsByTxnId.values()) {\n if (request.pending && request.channel.isToDevices(devices)) {\n return request;\n }\n }\n }\n }\n\n public getRequestsInProgress(userId: string): Request[] {\n const requestsByTxnId = this.requestsByUserId.get(userId);\n if (requestsByTxnId) {\n return Array.from(requestsByTxnId.values()).filter((r) => r.pending);\n }\n return [];\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,227 +0,0 @@
1
- import { QRCodeData } from "../QRCode.ts";
2
- import { IVerificationChannel } from "./Channel.ts";
3
- import { MatrixClient } from "../../../client.ts";
4
- import { MatrixEvent } from "../../../models/event.ts";
5
- import { VerificationBase } from "../Base.ts";
6
- import { VerificationMethod } from "../../index.ts";
7
- import { TypedEventEmitter } from "../../../models/typed-event-emitter.ts";
8
- import { VerificationPhase as Phase, VerificationRequest as IVerificationRequest, VerificationRequestEvent, VerificationRequestEventHandlerMap, Verifier } from "../../../crypto-api/verification.ts";
9
- export { VerificationPhase as Phase, VerificationRequestEvent } from "../../../crypto-api/verification.ts";
10
- export declare const EVENT_PREFIX = "m.key.verification.";
11
- export declare const REQUEST_TYPE: string;
12
- export declare const START_TYPE: string;
13
- export declare const CANCEL_TYPE: string;
14
- export declare const DONE_TYPE: string;
15
- export declare const READY_TYPE: string;
16
- export declare const PHASE_UNSENT = Phase.Unsent;
17
- export declare const PHASE_REQUESTED = Phase.Requested;
18
- export declare const PHASE_READY = Phase.Ready;
19
- export declare const PHASE_STARTED = Phase.Started;
20
- export declare const PHASE_CANCELLED = Phase.Cancelled;
21
- export declare const PHASE_DONE = Phase.Done;
22
- interface ITargetDevice {
23
- userId?: string;
24
- deviceId?: string;
25
- }
26
- /**
27
- * State machine for verification requests.
28
- * Things that differ based on what channel is used to
29
- * send and receive verification events are put in `InRoomChannel` or `ToDeviceChannel`.
30
- *
31
- * @deprecated Avoid direct references: instead prefer {@link Crypto.VerificationRequest}.
32
- */
33
- export declare class VerificationRequest<C extends IVerificationChannel = IVerificationChannel> extends TypedEventEmitter<VerificationRequestEvent, VerificationRequestEventHandlerMap> implements IVerificationRequest {
34
- readonly channel: C;
35
- private readonly verificationMethods;
36
- private readonly client;
37
- private eventsByUs;
38
- private eventsByThem;
39
- private _observeOnly;
40
- private timeoutTimer;
41
- private _accepting;
42
- private _declining;
43
- private verifierHasFinished;
44
- private _cancelled;
45
- private _chosenMethod;
46
- private _qrCodeData;
47
- private requestReceivedAt;
48
- private commonMethods;
49
- private _phase;
50
- _cancellingUserId?: string;
51
- private _verifier?;
52
- constructor(channel: C, verificationMethods: Map<VerificationMethod, typeof VerificationBase>, client: MatrixClient);
53
- /**
54
- * Stateless validation logic not specific to the channel.
55
- * Invoked by the same static method in either channel.
56
- * @param type - the "symbolic" event type, as returned by the `getEventType` function on the channel.
57
- * @param event - the event to validate. Don't call getType() on it but use the `type` parameter instead.
58
- * @param client - the client to get the current user and device id from
59
- * @returns whether the event is valid and should be passed to handleEvent
60
- */
61
- static validateEvent(type: string, event: MatrixEvent, client: MatrixClient): boolean;
62
- /**
63
- * Unique ID for this verification request.
64
- *
65
- * An ID isn't assigned until the first message is sent, so this may be `undefined` in the early phases.
66
- */
67
- get transactionId(): string | undefined;
68
- /**
69
- * For an in-room verification, the ID of the room.
70
- */
71
- get roomId(): string | undefined;
72
- get invalid(): boolean;
73
- /** returns whether the phase is PHASE_REQUESTED */
74
- get requested(): boolean;
75
- /** returns whether the phase is PHASE_CANCELLED */
76
- get cancelled(): boolean;
77
- /** returns whether the phase is PHASE_READY */
78
- get ready(): boolean;
79
- /** returns whether the phase is PHASE_STARTED */
80
- get started(): boolean;
81
- /** returns whether the phase is PHASE_DONE */
82
- get done(): boolean;
83
- /** once the phase is PHASE_STARTED (and !initiatedByMe) or PHASE_READY: common methods supported by both sides */
84
- get methods(): VerificationMethod[];
85
- /** the method picked in the .start event */
86
- get chosenMethod(): VerificationMethod | null;
87
- calculateEventTimeout(event: MatrixEvent): number;
88
- /** The current remaining amount of ms before the request should be automatically cancelled */
89
- get timeout(): number;
90
- /**
91
- * The key verification request event.
92
- * @returns The request event, or falsey if not found.
93
- */
94
- get requestEvent(): MatrixEvent | undefined;
95
- /** current phase of the request. Some properties might only be defined in a current phase. */
96
- get phase(): Phase;
97
- /** The verifier to do the actual verification, once the method has been established. Only defined when the `phase` is PHASE_STARTED. */
98
- get verifier(): VerificationBase<any, any> | undefined;
99
- get canAccept(): boolean;
100
- get accepting(): boolean;
101
- get declining(): boolean;
102
- /** whether this request has sent it's initial event and needs more events to complete */
103
- get pending(): boolean;
104
- /** Only set after a .ready if the other party can scan a QR code
105
- *
106
- * @deprecated Prefer `generateQRCode`.
107
- */
108
- get qrCodeData(): QRCodeData | null;
109
- /**
110
- * Get the data for a QR code allowing the other device to verify this one, if it supports it.
111
- *
112
- * Only set after a .ready if the other party can scan a QR code, otherwise undefined.
113
- *
114
- * @deprecated Prefer `generateQRCode`.
115
- */
116
- getQRCodeBytes(): Buffer | undefined;
117
- /**
118
- * Generate the data for a QR code allowing the other device to verify this one, if it supports it.
119
- *
120
- * Only returns data once `phase` is `Ready` and the other party can scan a QR code;
121
- * otherwise returns `undefined`.
122
- */
123
- generateQRCode(): Promise<Buffer | undefined>;
124
- /** Checks whether the other party supports a given verification method.
125
- * This is useful when setting up the QR code UI, as it is somewhat asymmetrical:
126
- * if the other party supports SCAN_QR, we should show a QR code in the UI, and vice versa.
127
- * For methods that need to be supported by both ends, use the `methods` property.
128
- * @param method - the method to check
129
- * @param force - to check even if the phase is not ready or started yet, internal usage
130
- * @returns whether or not the other party said the supported the method */
131
- otherPartySupportsMethod(method: string, force?: boolean): boolean;
132
- /** Whether this request was initiated by the syncing user.
133
- * For InRoomChannel, this is who sent the .request event.
134
- * For ToDeviceChannel, this is who sent the .start event
135
- */
136
- get initiatedByMe(): boolean;
137
- /** The id of the user that initiated the request */
138
- get requestingUserId(): string;
139
- /** The id of the user that (will) receive(d) the request */
140
- get receivingUserId(): string;
141
- /** The user id of the other party in this request */
142
- get otherUserId(): string;
143
- /** The device id of the other party in this request, for requests happening over to-device messages only. */
144
- get otherDeviceId(): string | undefined;
145
- get isSelfVerification(): boolean;
146
- /**
147
- * The id of the user that cancelled the request,
148
- * only defined when phase is PHASE_CANCELLED
149
- */
150
- get cancellingUserId(): string | undefined;
151
- /**
152
- * The cancellation code e.g m.user which is responsible for cancelling this verification
153
- */
154
- get cancellationCode(): string;
155
- get observeOnly(): boolean;
156
- /**
157
- * Gets which device the verification should be started with
158
- * given the events sent so far in the verification. This is the
159
- * same algorithm used to determine which device to send the
160
- * verification to when no specific device is specified.
161
- * @returns The device information
162
- */
163
- get targetDevice(): ITargetDevice;
164
- beginKeyVerification(method: VerificationMethod, targetDevice?: ITargetDevice | null): VerificationBase<any, any>;
165
- startVerification(method: string): Promise<Verifier>;
166
- scanQRCode(qrCodeData: Uint8Array): Promise<Verifier>;
167
- /**
168
- * sends the initial .request event.
169
- * @returns resolves when the event has been sent.
170
- */
171
- sendRequest(): Promise<void>;
172
- /**
173
- * Cancels the request, sending a cancellation to the other party
174
- * @param params
175
- * @param params.reason - the error reason to send the cancellation with
176
- * @param params.code - the error code to send the cancellation with
177
- * @returns resolves when the event has been sent.
178
- */
179
- cancel({ reason, code }?: {
180
- reason?: string | undefined;
181
- code?: string | undefined;
182
- }): Promise<void>;
183
- /**
184
- * Accepts the request, sending a .ready event to the other party
185
- * @returns resolves when the event has been sent.
186
- */
187
- accept(): Promise<void>;
188
- /**
189
- * Can be used to listen for state changes until the callback returns true.
190
- * @param fn - callback to evaluate whether the request is in the desired state.
191
- * Takes the request as an argument.
192
- * @returns that resolves once the callback returns true
193
- * @throws Error when the request is cancelled
194
- */
195
- waitFor(fn: (request: VerificationRequest) => boolean): Promise<VerificationRequest>;
196
- private setPhase;
197
- private getEventByEither;
198
- private getEventBy;
199
- private calculatePhaseTransitions;
200
- private transitionToPhase;
201
- private applyPhaseTransitions;
202
- private isWinningStartRace;
203
- hasEventId(eventId: string): boolean;
204
- /**
205
- * Changes the state of the request and verifier in response to a key verification event.
206
- * @param type - the "symbolic" event type, as returned by the `getEventType` function on the channel.
207
- * @param event - the event to handle. Don't call getType() on it but use the `type` parameter instead.
208
- * @param isLiveEvent - whether this is an even received through sync or not
209
- * @param isRemoteEcho - whether this is the remote echo of an event sent by the same device
210
- * @param isSentByUs - whether this event is sent by a party that can accept and/or observe the request like one of our peers.
211
- * For InRoomChannel this means any device for the syncing user. For ToDeviceChannel, just the syncing device.
212
- * @returns a promise that resolves when any requests as an answer to the passed-in event are sent.
213
- */
214
- handleEvent(type: string, event: MatrixEvent, isLiveEvent: boolean, isRemoteEcho: boolean, isSentByUs: boolean): Promise<void>;
215
- private setupTimeout;
216
- private cancelOnTimeout;
217
- private cancelOnError;
218
- private adjustObserveOnly;
219
- private addEvent;
220
- private createVerifier;
221
- private wasSentByOwnUser;
222
- private wasSentByOwnDevice;
223
- onVerifierCancelled(): void;
224
- onVerifierFinished(): void;
225
- getEventFromOtherParty(type: string): MatrixEvent | undefined;
226
- }
227
- //# sourceMappingURL=VerificationRequest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VerificationRequest.d.ts","sourceRoot":"","sources":["../../../../src/crypto/verification/request/VerificationRequest.ts"],"names":[],"mappings":"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"}