@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,42 +0,0 @@
1
- /*
2
- Copyright 2018 - 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
- import { randomString } from "../randomstring.ts";
18
- import { deriveRecoveryKeyFromPassphrase } from "../crypto-api/index.ts";
19
-
20
- const DEFAULT_ITERATIONS = 500000;
21
-
22
- interface IKey {
23
- key: Uint8Array;
24
- salt: string;
25
- iterations: number;
26
- }
27
-
28
- /**
29
- * Generate a new recovery key, based on a passphrase.
30
- * @param passphrase - The passphrase to generate the key from
31
- */
32
- export async function keyFromPassphrase(passphrase: string): Promise<IKey> {
33
- const salt = randomString(32);
34
-
35
- const key = await deriveRecoveryKeyFromPassphrase(passphrase, salt, DEFAULT_ITERATIONS);
36
-
37
- return { key, salt, iterations: DEFAULT_ITERATIONS };
38
- }
39
-
40
- // Re-export the key passphrase functions to avoid breaking changes
41
- export { deriveRecoveryKeyFromPassphrase as deriveKey };
42
- export { keyFromAuthData } from "../common-crypto/key-passphrase.ts";
@@ -1,47 +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
- // Export for backward compatibility
18
- import { ImportRoomKeyProgressData } from "../crypto-api/index.ts";
19
-
20
- export type {
21
- Curve25519AuthData as ICurve25519AuthData,
22
- Aes256AuthData as IAes256AuthData,
23
- KeyBackupInfo as IKeyBackupInfo,
24
- Curve25519SessionData,
25
- KeyBackupSession as IKeyBackupSession,
26
- KeyBackupRoomSessions as IKeyBackupRoomSessions,
27
- } from "../crypto-api/keybackup.ts";
28
-
29
- /* eslint-enable camelcase */
30
-
31
- export interface IKeyBackupPrepareOpts {
32
- /**
33
- * Whether to use Secure Secret Storage to store the key encrypting key backups.
34
- * Optional, defaults to false.
35
- */
36
- secureSecretStorage: boolean;
37
- }
38
-
39
- export interface IKeyBackupRestoreResult {
40
- total: number;
41
- imported: number;
42
- }
43
-
44
- export interface IKeyBackupRestoreOpts {
45
- cacheCompleteCallback?: () => void;
46
- progressCallback?: (progress: ImportRoomKeyProgressData) => void;
47
- }
@@ -1,539 +0,0 @@
1
- /*
2
- Copyright 2016 - 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
- /**
18
- * Utilities common to olm encryption algorithms
19
- */
20
-
21
- import anotherjson from "another-json";
22
-
23
- import type { PkSigning } from "@matrix-org/olm";
24
- import type { IOneTimeKey } from "../@types/crypto.ts";
25
- import { OlmDevice } from "./OlmDevice.ts";
26
- import { DeviceInfo } from "./deviceinfo.ts";
27
- import { Logger, logger } from "../logger.ts";
28
- import { IClaimOTKsResult, MatrixClient } from "../client.ts";
29
- import { ISignatures } from "../@types/signed.ts";
30
- import { MatrixEvent } from "../models/event.ts";
31
- import { EventType } from "../@types/event.ts";
32
- import { IMessage } from "./algorithms/olm.ts";
33
- import { MapWithDefault } from "../utils.ts";
34
-
35
- enum Algorithm {
36
- Olm = "m.olm.v1.curve25519-aes-sha2",
37
- Megolm = "m.megolm.v1.aes-sha2",
38
- MegolmBackup = "m.megolm_backup.v1.curve25519-aes-sha2",
39
- }
40
-
41
- /**
42
- * matrix algorithm tag for olm
43
- */
44
- export const OLM_ALGORITHM = Algorithm.Olm;
45
-
46
- /**
47
- * matrix algorithm tag for megolm
48
- */
49
- export const MEGOLM_ALGORITHM = Algorithm.Megolm;
50
-
51
- /**
52
- * matrix algorithm tag for megolm backups
53
- */
54
- export const MEGOLM_BACKUP_ALGORITHM = Algorithm.MegolmBackup;
55
-
56
- export interface IOlmSessionResult {
57
- /** device info */
58
- device: DeviceInfo;
59
- /** base64 olm session id; null if no session could be established */
60
- sessionId: string | null;
61
- }
62
-
63
- /**
64
- * Encrypt an event payload for an Olm device
65
- *
66
- * @param resultsObject - The `ciphertext` property
67
- * of the m.room.encrypted event to which to add our result
68
- *
69
- * @param olmDevice - olm.js wrapper
70
- * @param payloadFields - fields to include in the encrypted payload
71
- *
72
- * Returns a promise which resolves (to undefined) when the payload
73
- * has been encrypted into `resultsObject`
74
- */
75
- export async function encryptMessageForDevice(
76
- resultsObject: Record<string, IMessage>,
77
- ourUserId: string,
78
- ourDeviceId: string | undefined,
79
- olmDevice: OlmDevice,
80
- recipientUserId: string,
81
- recipientDevice: DeviceInfo,
82
- payloadFields: Record<string, any>,
83
- ): Promise<void> {
84
- const deviceKey = recipientDevice.getIdentityKey();
85
- const sessionId = await olmDevice.getSessionIdForDevice(deviceKey);
86
- if (sessionId === null) {
87
- // If we don't have a session for a device then
88
- // we can't encrypt a message for it.
89
- logger.log(
90
- `[olmlib.encryptMessageForDevice] Unable to find Olm session for device ` +
91
- `${recipientUserId}:${recipientDevice.deviceId}`,
92
- );
93
- return;
94
- }
95
-
96
- logger.log(
97
- `[olmlib.encryptMessageForDevice] Using Olm session ${sessionId} for device ` +
98
- `${recipientUserId}:${recipientDevice.deviceId}`,
99
- );
100
-
101
- const payload = {
102
- sender: ourUserId,
103
- // TODO this appears to no longer be used whatsoever
104
- sender_device: ourDeviceId,
105
-
106
- // Include the Ed25519 key so that the recipient knows what
107
- // device this message came from.
108
- // We don't need to include the curve25519 key since the
109
- // recipient will already know this from the olm headers.
110
- // When combined with the device keys retrieved from the
111
- // homeserver signed by the ed25519 key this proves that
112
- // the curve25519 key and the ed25519 key are owned by
113
- // the same device.
114
- keys: {
115
- ed25519: olmDevice.deviceEd25519Key,
116
- },
117
-
118
- // include the recipient device details in the payload,
119
- // to avoid unknown key attacks, per
120
- // https://github.com/vector-im/vector-web/issues/2483
121
- recipient: recipientUserId,
122
- recipient_keys: {
123
- ed25519: recipientDevice.getFingerprint(),
124
- },
125
- ...payloadFields,
126
- };
127
-
128
- // TODO: technically, a bunch of that stuff only needs to be included for
129
- // pre-key messages: after that, both sides know exactly which devices are
130
- // involved in the session. If we're looking to reduce data transfer in the
131
- // future, we could elide them for subsequent messages.
132
-
133
- resultsObject[deviceKey] = await olmDevice.encryptMessage(deviceKey, sessionId, JSON.stringify(payload));
134
- }
135
-
136
- interface IExistingOlmSession {
137
- device: DeviceInfo;
138
- sessionId: string | null;
139
- }
140
-
141
- /**
142
- * Get the existing olm sessions for the given devices, and the devices that
143
- * don't have olm sessions.
144
- *
145
- *
146
- *
147
- * @param devicesByUser - map from userid to list of devices to ensure sessions for
148
- *
149
- * @returns resolves to an array. The first element of the array is a
150
- * a map of user IDs to arrays of deviceInfo, representing the devices that
151
- * don't have established olm sessions. The second element of the array is
152
- * a map from userId to deviceId to {@link OlmSessionResult}
153
- */
154
- export async function getExistingOlmSessions(
155
- olmDevice: OlmDevice,
156
- baseApis: MatrixClient,
157
- devicesByUser: Record<string, DeviceInfo[]>,
158
- ): Promise<[Map<string, DeviceInfo[]>, Map<string, Map<string, IExistingOlmSession>>]> {
159
- // map user Id → DeviceInfo[]
160
- const devicesWithoutSession: MapWithDefault<string, DeviceInfo[]> = new MapWithDefault(() => []);
161
- // map user Id → device Id → IExistingOlmSession
162
- const sessions: MapWithDefault<string, Map<string, IExistingOlmSession>> = new MapWithDefault(() => new Map());
163
-
164
- const promises: Promise<void>[] = [];
165
-
166
- for (const [userId, devices] of Object.entries(devicesByUser)) {
167
- for (const deviceInfo of devices) {
168
- const deviceId = deviceInfo.deviceId;
169
- const key = deviceInfo.getIdentityKey();
170
- promises.push(
171
- (async (): Promise<void> => {
172
- const sessionId = await olmDevice.getSessionIdForDevice(key, true);
173
- if (sessionId === null) {
174
- devicesWithoutSession.getOrCreate(userId).push(deviceInfo);
175
- } else {
176
- sessions.getOrCreate(userId).set(deviceId, {
177
- device: deviceInfo,
178
- sessionId: sessionId,
179
- });
180
- }
181
- })(),
182
- );
183
- }
184
- }
185
-
186
- await Promise.all(promises);
187
-
188
- return [devicesWithoutSession, sessions];
189
- }
190
-
191
- /**
192
- * Try to make sure we have established olm sessions for the given devices.
193
- *
194
- * @param devicesByUser - map from userid to list of devices to ensure sessions for
195
- *
196
- * @param force - If true, establish a new session even if one
197
- * already exists.
198
- *
199
- * @param otkTimeout - The timeout in milliseconds when requesting
200
- * one-time keys for establishing new olm sessions.
201
- *
202
- * @param failedServers - An array to fill with remote servers that
203
- * failed to respond to one-time-key requests.
204
- *
205
- * @param log - A possibly customised log
206
- *
207
- * @returns resolves once the sessions are complete, to
208
- * an Object mapping from userId to deviceId to
209
- * {@link OlmSessionResult}
210
- */
211
- export async function ensureOlmSessionsForDevices(
212
- olmDevice: OlmDevice,
213
- baseApis: MatrixClient,
214
- devicesByUser: Map<string, DeviceInfo[]>,
215
- force = false,
216
- otkTimeout?: number,
217
- failedServers?: string[],
218
- log: Logger = logger,
219
- ): Promise<Map<string, Map<string, IOlmSessionResult>>> {
220
- const devicesWithoutSession: [string, string][] = [
221
- // [userId, deviceId], ...
222
- ];
223
- // map user Id → device Id → IExistingOlmSession
224
- const result: Map<string, Map<string, IExistingOlmSession>> = new Map();
225
- // map device key → resolve session fn
226
- const resolveSession: Map<string, (sessionId?: string) => void> = new Map();
227
-
228
- // Mark all sessions this task intends to update as in progress. It is
229
- // important to do this for all devices this task cares about in a single
230
- // synchronous operation, as otherwise it is possible to have deadlocks
231
- // where multiple tasks wait indefinitely on another task to update some set
232
- // of common devices.
233
- for (const devices of devicesByUser.values()) {
234
- for (const deviceInfo of devices) {
235
- const key = deviceInfo.getIdentityKey();
236
-
237
- if (key === olmDevice.deviceCurve25519Key) {
238
- // We don't start sessions with ourself, so there's no need to
239
- // mark it in progress.
240
- continue;
241
- }
242
-
243
- if (!olmDevice.sessionsInProgress[key]) {
244
- // pre-emptively mark the session as in-progress to avoid race
245
- // conditions. If we find that we already have a session, then
246
- // we'll resolve
247
- olmDevice.sessionsInProgress[key] = new Promise((resolve) => {
248
- resolveSession.set(key, (v: any): void => {
249
- delete olmDevice.sessionsInProgress[key];
250
- resolve(v);
251
- });
252
- });
253
- }
254
- }
255
- }
256
-
257
- for (const [userId, devices] of devicesByUser) {
258
- const resultDevices = new Map();
259
- result.set(userId, resultDevices);
260
-
261
- for (const deviceInfo of devices) {
262
- const deviceId = deviceInfo.deviceId;
263
- const key = deviceInfo.getIdentityKey();
264
-
265
- if (key === olmDevice.deviceCurve25519Key) {
266
- // We should never be trying to start a session with ourself.
267
- // Apart from talking to yourself being the first sign of madness,
268
- // olm sessions can't do this because they get confused when
269
- // they get a message and see that the 'other side' has started a
270
- // new chain when this side has an active sender chain.
271
- // If you see this message being logged in the wild, we should find
272
- // the thing that is trying to send Olm messages to itself and fix it.
273
- log.info("Attempted to start session with ourself! Ignoring");
274
- // We must fill in the section in the return value though, as callers
275
- // expect it to be there.
276
- resultDevices.set(deviceId, {
277
- device: deviceInfo,
278
- sessionId: null,
279
- });
280
- continue;
281
- }
282
-
283
- const forWhom = `for ${key} (${userId}:${deviceId})`;
284
- const sessionId = await olmDevice.getSessionIdForDevice(key, !!resolveSession.get(key), log);
285
- const resolveSessionFn = resolveSession.get(key);
286
- if (sessionId !== null && resolveSessionFn) {
287
- // we found a session, but we had marked the session as
288
- // in-progress, so resolve it now, which will unmark it and
289
- // unblock anything that was waiting
290
- resolveSessionFn();
291
- }
292
- if (sessionId === null || force) {
293
- if (force) {
294
- log.info(`Forcing new Olm session ${forWhom}`);
295
- } else {
296
- log.info(`Making new Olm session ${forWhom}`);
297
- }
298
- devicesWithoutSession.push([userId, deviceId]);
299
- }
300
- resultDevices.set(deviceId, {
301
- device: deviceInfo,
302
- sessionId: sessionId,
303
- });
304
- }
305
- }
306
-
307
- if (devicesWithoutSession.length === 0) {
308
- return result;
309
- }
310
-
311
- const oneTimeKeyAlgorithm = "signed_curve25519";
312
- let res: IClaimOTKsResult;
313
- let taskDetail = `one-time keys for ${devicesWithoutSession.length} devices`;
314
- try {
315
- log.debug(`Claiming ${taskDetail}`);
316
- res = await baseApis.claimOneTimeKeys(devicesWithoutSession, oneTimeKeyAlgorithm, otkTimeout);
317
- log.debug(`Claimed ${taskDetail}`);
318
- } catch (e) {
319
- for (const resolver of resolveSession.values()) {
320
- resolver();
321
- }
322
- log.debug(`Failed to claim ${taskDetail}`, e, devicesWithoutSession);
323
- throw e;
324
- }
325
-
326
- if (failedServers && "failures" in res) {
327
- failedServers.push(...Object.keys(res.failures));
328
- }
329
-
330
- const otkResult = res.one_time_keys || ({} as IClaimOTKsResult["one_time_keys"]);
331
- const promises: Promise<void>[] = [];
332
- for (const [userId, devices] of devicesByUser) {
333
- const userRes = otkResult[userId] || {};
334
- for (const deviceInfo of devices) {
335
- const deviceId = deviceInfo.deviceId;
336
- const key = deviceInfo.getIdentityKey();
337
-
338
- if (key === olmDevice.deviceCurve25519Key) {
339
- // We've already logged about this above. Skip here too
340
- // otherwise we'll log saying there are no one-time keys
341
- // which will be confusing.
342
- continue;
343
- }
344
-
345
- if (result.get(userId)?.get(deviceId)?.sessionId && !force) {
346
- // we already have a result for this device
347
- continue;
348
- }
349
-
350
- const deviceRes = userRes[deviceId] || {};
351
- let oneTimeKey: IOneTimeKey | null = null;
352
- for (const keyId in deviceRes) {
353
- if (keyId.indexOf(oneTimeKeyAlgorithm + ":") === 0) {
354
- oneTimeKey = deviceRes[keyId];
355
- }
356
- }
357
-
358
- if (!oneTimeKey) {
359
- log.warn(`No one-time keys (alg=${oneTimeKeyAlgorithm}) ` + `for device ${userId}:${deviceId}`);
360
- resolveSession.get(key)?.();
361
- continue;
362
- }
363
-
364
- promises.push(
365
- _verifyKeyAndStartSession(olmDevice, oneTimeKey, userId, deviceInfo).then(
366
- (sid) => {
367
- resolveSession.get(key)?.(sid ?? undefined);
368
- const deviceInfo = result.get(userId)?.get(deviceId);
369
- if (deviceInfo) deviceInfo.sessionId = sid;
370
- },
371
- (e) => {
372
- resolveSession.get(key)?.();
373
- throw e;
374
- },
375
- ),
376
- );
377
- }
378
- }
379
-
380
- taskDetail = `Olm sessions for ${promises.length} devices`;
381
- log.debug(`Starting ${taskDetail}`);
382
- await Promise.all(promises);
383
- log.debug(`Started ${taskDetail}`);
384
- return result;
385
- }
386
-
387
- async function _verifyKeyAndStartSession(
388
- olmDevice: OlmDevice,
389
- oneTimeKey: IOneTimeKey,
390
- userId: string,
391
- deviceInfo: DeviceInfo,
392
- ): Promise<string | null> {
393
- const deviceId = deviceInfo.deviceId;
394
- try {
395
- await verifySignature(olmDevice, oneTimeKey, userId, deviceId, deviceInfo.getFingerprint());
396
- } catch (e) {
397
- logger.error("Unable to verify signature on one-time key for device " + userId + ":" + deviceId + ":", e);
398
- return null;
399
- }
400
-
401
- let sid;
402
- try {
403
- sid = await olmDevice.createOutboundSession(deviceInfo.getIdentityKey(), oneTimeKey.key);
404
- } catch (e) {
405
- // possibly a bad key
406
- logger.error("Error starting olm session with device " + userId + ":" + deviceId + ": " + e);
407
- return null;
408
- }
409
-
410
- logger.log("Started new olm sessionid " + sid + " for device " + userId + ":" + deviceId);
411
- return sid;
412
- }
413
-
414
- export interface IObject {
415
- unsigned?: object;
416
- signatures?: ISignatures;
417
- }
418
-
419
- /**
420
- * Verify the signature on an object
421
- *
422
- * @param olmDevice - olm wrapper to use for verify op
423
- *
424
- * @param obj - object to check signature on.
425
- *
426
- * @param signingUserId - ID of the user whose signature should be checked
427
- *
428
- * @param signingDeviceId - ID of the device whose signature should be checked
429
- *
430
- * @param signingKey - base64-ed ed25519 public key
431
- *
432
- * Returns a promise which resolves (to undefined) if the the signature is good,
433
- * or rejects with an Error if it is bad.
434
- */
435
- export async function verifySignature(
436
- olmDevice: OlmDevice,
437
- obj: IOneTimeKey | IObject,
438
- signingUserId: string,
439
- signingDeviceId: string,
440
- signingKey: string,
441
- ): Promise<void> {
442
- const signKeyId = "ed25519:" + signingDeviceId;
443
- const signatures = obj.signatures || {};
444
- const userSigs = signatures[signingUserId] || {};
445
- const signature = userSigs[signKeyId];
446
- if (!signature) {
447
- throw Error("No signature");
448
- }
449
-
450
- // prepare the canonical json: remove unsigned and signatures, and stringify with anotherjson
451
- const mangledObj = Object.assign({}, obj);
452
- if ("unsigned" in mangledObj) {
453
- delete mangledObj.unsigned;
454
- }
455
- delete mangledObj.signatures;
456
- const json = anotherjson.stringify(mangledObj);
457
-
458
- olmDevice.verifySignature(signingKey, json, signature);
459
- }
460
-
461
- /**
462
- * Sign a JSON object using public key cryptography
463
- * @param obj - Object to sign. The object will be modified to include
464
- * the new signature
465
- * @param key - the signing object or the private key
466
- * seed
467
- * @param userId - The user ID who owns the signing key
468
- * @param pubKey - The public key (ignored if key is a seed)
469
- * @returns the signature for the object
470
- */
471
- export function pkSign(obj: object & IObject, key: Uint8Array | PkSigning, userId: string, pubKey: string): string {
472
- let createdKey = false;
473
- if (key instanceof Uint8Array) {
474
- const keyObj = new globalThis.Olm.PkSigning();
475
- pubKey = keyObj.init_with_seed(key);
476
- key = keyObj;
477
- createdKey = true;
478
- }
479
- const sigs = obj.signatures || {};
480
- delete obj.signatures;
481
- const unsigned = obj.unsigned;
482
- if (obj.unsigned) delete obj.unsigned;
483
- try {
484
- const mysigs = sigs[userId] || {};
485
- sigs[userId] = mysigs;
486
-
487
- return (mysigs["ed25519:" + pubKey] = key.sign(anotherjson.stringify(obj)));
488
- } finally {
489
- obj.signatures = sigs;
490
- if (unsigned) obj.unsigned = unsigned;
491
- if (createdKey) {
492
- key.free();
493
- }
494
- }
495
- }
496
-
497
- /**
498
- * Verify a signed JSON object
499
- * @param obj - Object to verify
500
- * @param pubKey - The public key to use to verify
501
- * @param userId - The user ID who signed the object
502
- */
503
- export function pkVerify(obj: IObject, pubKey: string, userId: string): void {
504
- const keyId = "ed25519:" + pubKey;
505
- if (!(obj.signatures && obj.signatures[userId] && obj.signatures[userId][keyId])) {
506
- throw new Error("No signature");
507
- }
508
- const signature = obj.signatures[userId][keyId];
509
- const util = new globalThis.Olm.Utility();
510
- const sigs = obj.signatures;
511
- delete obj.signatures;
512
- const unsigned = obj.unsigned;
513
- if (obj.unsigned) delete obj.unsigned;
514
- try {
515
- util.ed25519_verify(pubKey, anotherjson.stringify(obj), signature);
516
- } finally {
517
- obj.signatures = sigs;
518
- if (unsigned) obj.unsigned = unsigned;
519
- util.free();
520
- }
521
- }
522
-
523
- /**
524
- * Check that an event was encrypted using olm.
525
- */
526
- export function isOlmEncrypted(event: MatrixEvent): boolean {
527
- if (!event.getSenderKey()) {
528
- logger.error("Event has no sender key (not encrypted?)");
529
- return false;
530
- }
531
- if (
532
- event.getWireType() !== EventType.RoomMessageEncrypted ||
533
- !["m.olm.v1.curve25519-aes-sha2"].includes(event.getWireContent().algorithm)
534
- ) {
535
- logger.error("Event was not encrypted using an appropriate algorithm");
536
- return false;
537
- }
538
- return true;
539
- }
@@ -1,18 +0,0 @@
1
- /*
2
- Copyright 2018 New Vector Ltd
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-export to avoid breaking changes
18
- export * from "../crypto-api/recovery-key.ts";