@textrp/briij-js-sdk 41.0.1 → 43.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/LICENSE +177 -177
  3. package/README.md +85 -3
  4. package/lib/@types/AESEncryptedSecretStoragePayload.js.map +1 -1
  5. package/lib/@types/IIdentityServerProvider.js.map +1 -1
  6. package/lib/@types/PushRules.js +14 -14
  7. package/lib/@types/PushRules.js.map +1 -1
  8. package/lib/@types/another-json.d.js.map +1 -1
  9. package/lib/@types/auth.d.ts +72 -1
  10. package/lib/@types/auth.d.ts.map +1 -1
  11. package/lib/@types/auth.js +57 -54
  12. package/lib/@types/auth.js.map +1 -1
  13. package/lib/@types/beacon.js +100 -100
  14. package/lib/@types/beacon.js.map +1 -1
  15. package/lib/@types/common.js.map +1 -1
  16. package/lib/@types/crypto.js.map +1 -1
  17. package/lib/@types/event.d.ts +59 -0
  18. package/lib/@types/event.d.ts.map +1 -1
  19. package/lib/@types/event.js +105 -102
  20. package/lib/@types/event.js.map +1 -1
  21. package/lib/@types/events.js.map +1 -1
  22. package/lib/@types/extensible_events.js +53 -53
  23. package/lib/@types/extensible_events.js.map +1 -1
  24. package/lib/@types/local_notifications.js.map +1 -1
  25. package/lib/@types/location.js +41 -41
  26. package/lib/@types/location.js.map +1 -1
  27. package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +1 -1
  28. package/lib/@types/media.js.map +1 -1
  29. package/lib/@types/membership.js +39 -39
  30. package/lib/@types/membership.js.map +1 -1
  31. package/lib/@types/partials.js +25 -25
  32. package/lib/@types/partials.js.map +1 -1
  33. package/lib/@types/polls.js +46 -46
  34. package/lib/@types/polls.js.map +1 -1
  35. package/lib/@types/read_receipts.js +14 -14
  36. package/lib/@types/read_receipts.js.map +1 -1
  37. package/lib/@types/registration.js.map +1 -1
  38. package/lib/@types/search.js +14 -14
  39. package/lib/@types/search.js.map +1 -1
  40. package/lib/@types/signed.js.map +1 -1
  41. package/lib/@types/spaces.js.map +1 -1
  42. package/lib/@types/state_events.js.map +1 -1
  43. package/lib/@types/synapse.js.map +1 -1
  44. package/lib/@types/sync.js +18 -18
  45. package/lib/@types/sync.js.map +1 -1
  46. package/lib/@types/threepids.js +14 -14
  47. package/lib/@types/threepids.js.map +1 -1
  48. package/lib/@types/topic.js +47 -47
  49. package/lib/@types/topic.js.map +1 -1
  50. package/lib/@types/uia.js.map +1 -1
  51. package/lib/NamespacedValue.js +20 -20
  52. package/lib/NamespacedValue.js.map +1 -1
  53. package/lib/ReEmitter.js +16 -16
  54. package/lib/ReEmitter.js.map +1 -1
  55. package/lib/base64.js +32 -32
  56. package/lib/base64.js.map +1 -1
  57. package/lib/briij.d.ts +4 -0
  58. package/lib/briij.d.ts.map +1 -1
  59. package/lib/briij.js +4 -0
  60. package/lib/briij.js.map +1 -1
  61. package/lib/client.d.ts +48 -1
  62. package/lib/client.d.ts.map +1 -1
  63. package/lib/client.js +262 -108
  64. package/lib/client.js.map +1 -1
  65. package/lib/common-crypto/key-passphrase.js +19 -19
  66. package/lib/common-crypto/key-passphrase.js.map +1 -1
  67. package/lib/content-helpers.js +57 -57
  68. package/lib/content-helpers.js.map +1 -1
  69. package/lib/content-repo.js +36 -36
  70. package/lib/content-repo.js.map +1 -1
  71. package/lib/crypto/store/base.js +69 -69
  72. package/lib/crypto/store/base.js.map +1 -1
  73. package/lib/crypto/store/indexeddb-crypto-store-backend.js +58 -58
  74. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +1 -1
  75. package/lib/crypto/store/indexeddb-crypto-store.js +193 -193
  76. package/lib/crypto/store/indexeddb-crypto-store.js.map +1 -1
  77. package/lib/crypto/store/localStorage-crypto-store.js +72 -72
  78. package/lib/crypto/store/localStorage-crypto-store.js.map +1 -1
  79. package/lib/crypto/store/memory-crypto-store.js +74 -74
  80. package/lib/crypto/store/memory-crypto-store.js.map +1 -1
  81. package/lib/crypto-api/CryptoEventHandlerMap.js.map +1 -1
  82. package/lib/crypto-api/key-passphrase.js +22 -22
  83. package/lib/crypto-api/key-passphrase.js.map +1 -1
  84. package/lib/crypto-api/keybackup.js.map +1 -1
  85. package/lib/crypto-api/recovery-key.js +20 -20
  86. package/lib/crypto-api/recovery-key.js.map +1 -1
  87. package/lib/digest.js +21 -21
  88. package/lib/digest.js.map +1 -1
  89. package/lib/extensible_events_v1/ExtensibleEvent.js +39 -39
  90. package/lib/extensible_events_v1/ExtensibleEvent.js.map +1 -1
  91. package/lib/extensible_events_v1/InvalidEventError.js +16 -16
  92. package/lib/extensible_events_v1/InvalidEventError.js.map +1 -1
  93. package/lib/extensible_events_v1/MessageEvent.js +39 -39
  94. package/lib/extensible_events_v1/MessageEvent.js.map +1 -1
  95. package/lib/extensible_events_v1/PollEndEvent.js +29 -29
  96. package/lib/extensible_events_v1/PollEndEvent.js.map +1 -1
  97. package/lib/extensible_events_v1/PollResponseEvent.js +39 -39
  98. package/lib/extensible_events_v1/PollResponseEvent.js.map +1 -1
  99. package/lib/extensible_events_v1/PollStartEvent.js +52 -52
  100. package/lib/extensible_events_v1/PollStartEvent.js.map +1 -1
  101. package/lib/extensible_events_v1/utilities.js +22 -22
  102. package/lib/extensible_events_v1/utilities.js.map +1 -1
  103. package/lib/feature.js +16 -16
  104. package/lib/feature.js.map +1 -1
  105. package/lib/http-api/method.js +14 -14
  106. package/lib/http-api/method.js.map +1 -1
  107. package/lib/http-api/prefix.js +26 -26
  108. package/lib/http-api/prefix.js.map +1 -1
  109. package/lib/indexeddb-helpers.js +21 -21
  110. package/lib/indexeddb-helpers.js.map +1 -1
  111. package/lib/indexeddb-worker.js +18 -18
  112. package/lib/indexeddb-worker.js.map +1 -1
  113. package/lib/matrixrtc/IKeyTransport.js +17 -17
  114. package/lib/matrixrtc/IKeyTransport.js.map +1 -1
  115. package/lib/matrixrtc/IMembershipManager.js +27 -27
  116. package/lib/matrixrtc/IMembershipManager.js.map +1 -1
  117. package/lib/matrixrtc/LivekitTransport.js +19 -19
  118. package/lib/matrixrtc/LivekitTransport.js.map +1 -1
  119. package/lib/matrixrtc/index.js +14 -14
  120. package/lib/matrixrtc/index.js.map +1 -1
  121. package/lib/matrixrtc/utils.js +27 -27
  122. package/lib/matrixrtc/utils.js.map +1 -1
  123. package/lib/models/ToDeviceMessage.js.map +1 -1
  124. package/lib/models/device.js +24 -24
  125. package/lib/models/device.js.map +1 -1
  126. package/lib/models/event-status.js +17 -17
  127. package/lib/models/event-status.js.map +1 -1
  128. package/lib/models/invites-ignorer-types.js +25 -25
  129. package/lib/models/invites-ignorer-types.js.map +1 -1
  130. package/lib/models/profile-keys.js +26 -26
  131. package/lib/models/profile-keys.js.map +1 -1
  132. package/lib/models/room-summary.js +26 -26
  133. package/lib/models/room-summary.js.map +1 -1
  134. package/lib/models/search-result.js +22 -22
  135. package/lib/models/search-result.js.map +1 -1
  136. package/lib/models/typed-event-emitter.js +122 -122
  137. package/lib/models/typed-event-emitter.js.map +1 -1
  138. package/lib/oidc/authorize.js +76 -76
  139. package/lib/oidc/authorize.js.map +1 -1
  140. package/lib/oidc/error.js +17 -17
  141. package/lib/oidc/error.js.map +1 -1
  142. package/lib/oidc/index.js +17 -17
  143. package/lib/oidc/index.js.map +1 -1
  144. package/lib/oidc/register.js +41 -41
  145. package/lib/oidc/register.js.map +1 -1
  146. package/lib/oidc/tokenRefresher.js +51 -51
  147. package/lib/oidc/tokenRefresher.js.map +1 -1
  148. package/lib/oidc/validate.js +59 -59
  149. package/lib/oidc/validate.js.map +1 -1
  150. package/lib/randomstring.js +35 -35
  151. package/lib/randomstring.js.map +1 -1
  152. package/lib/realtime-callbacks.js +39 -39
  153. package/lib/realtime-callbacks.js.map +1 -1
  154. package/lib/receipt-accumulator.js +44 -44
  155. package/lib/receipt-accumulator.js.map +1 -1
  156. package/lib/rendezvous/RendezvousChannel.js.map +1 -1
  157. package/lib/rendezvous/RendezvousCode.js.map +1 -1
  158. package/lib/rendezvous/RendezvousError.js +14 -14
  159. package/lib/rendezvous/RendezvousError.js.map +1 -1
  160. package/lib/rendezvous/RendezvousFailureReason.js +14 -14
  161. package/lib/rendezvous/RendezvousFailureReason.js.map +1 -1
  162. package/lib/rendezvous/RendezvousIntent.js +14 -14
  163. package/lib/rendezvous/RendezvousIntent.js.map +1 -1
  164. package/lib/rendezvous/RendezvousTransport.js.map +1 -1
  165. package/lib/rendezvous/channels/MSC4108SecureChannel.js +63 -63
  166. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +1 -1
  167. package/lib/rendezvous/channels/index.js +14 -14
  168. package/lib/rendezvous/channels/index.js.map +1 -1
  169. package/lib/rendezvous/index.js +14 -14
  170. package/lib/rendezvous/index.js.map +1 -1
  171. package/lib/rendezvous/transports/index.js +14 -14
  172. package/lib/rendezvous/transports/index.js.map +1 -1
  173. package/lib/rust-crypto/CrossSigningIdentity.js +29 -29
  174. package/lib/rust-crypto/CrossSigningIdentity.js.map +1 -1
  175. package/lib/rust-crypto/OutgoingRequestsManager.js +37 -37
  176. package/lib/rust-crypto/OutgoingRequestsManager.js.map +1 -1
  177. package/lib/rust-crypto/device-converter.js +30 -30
  178. package/lib/rust-crypto/device-converter.js.map +1 -1
  179. package/lib/rust-crypto/secret-storage.js +30 -30
  180. package/lib/rust-crypto/secret-storage.js.map +1 -1
  181. package/lib/service-types.js +14 -14
  182. package/lib/service-types.js.map +1 -1
  183. package/lib/store/local-storage-events-emitter.js +21 -21
  184. package/lib/store/local-storage-events-emitter.js.map +1 -1
  185. package/lib/sync-accumulator.js +50 -50
  186. package/lib/sync-accumulator.js.map +1 -1
  187. package/lib/thread-utils.js +20 -20
  188. package/lib/thread-utils.js.map +1 -1
  189. package/lib/types.js +34 -34
  190. package/lib/types.js.map +1 -1
  191. package/lib/utils/decryptAESSecretStorageItem.js +22 -22
  192. package/lib/utils/decryptAESSecretStorageItem.js.map +1 -1
  193. package/lib/utils/encryptAESSecretStorageItem.js +26 -26
  194. package/lib/utils/encryptAESSecretStorageItem.js.map +1 -1
  195. package/lib/utils/internal/deriveKeys.js +21 -21
  196. package/lib/utils/internal/deriveKeys.js.map +1 -1
  197. package/lib/utils/roomVersion.js +26 -26
  198. package/lib/utils/roomVersion.js.map +1 -1
  199. package/lib/version-support.js +26 -26
  200. package/lib/version-support.js.map +1 -1
  201. package/lib/wallet-recovery.d.ts +24 -0
  202. package/lib/wallet-recovery.d.ts.map +1 -0
  203. package/lib/wallet-recovery.js +232 -0
  204. package/lib/wallet-recovery.js.map +1 -0
  205. package/lib/webrtc/audioContext.js +24 -24
  206. package/lib/webrtc/audioContext.js.map +1 -1
  207. package/lib/webrtc/callEventTypes.js.map +1 -1
  208. package/lib/webrtc/stats/callFeedStatsReporter.js +14 -14
  209. package/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -1
  210. package/lib/webrtc/stats/callStatsReportGatherer.js +14 -14
  211. package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -1
  212. package/lib/webrtc/stats/callStatsReportSummary.js.map +1 -1
  213. package/lib/webrtc/stats/connectionStats.js +14 -14
  214. package/lib/webrtc/stats/connectionStats.js.map +1 -1
  215. package/lib/webrtc/stats/connectionStatsBuilder.js +14 -14
  216. package/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -1
  217. package/lib/webrtc/stats/connectionStatsReportBuilder.js +14 -14
  218. package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -1
  219. package/lib/webrtc/stats/groupCallStats.js +14 -14
  220. package/lib/webrtc/stats/groupCallStats.js.map +1 -1
  221. package/lib/webrtc/stats/media/mediaSsrcHandler.js +14 -14
  222. package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -1
  223. package/lib/webrtc/stats/media/mediaTrackHandler.js +14 -14
  224. package/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -1
  225. package/lib/webrtc/stats/media/mediaTrackStats.js +27 -27
  226. package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -1
  227. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +20 -20
  228. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -1
  229. package/lib/webrtc/stats/statsReport.js +14 -14
  230. package/lib/webrtc/stats/statsReport.js.map +1 -1
  231. package/lib/webrtc/stats/statsReportEmitter.js +14 -14
  232. package/lib/webrtc/stats/statsReportEmitter.js.map +1 -1
  233. package/lib/webrtc/stats/trackStatsBuilder.js +4 -4
  234. package/lib/webrtc/stats/trackStatsBuilder.js.map +1 -1
  235. package/lib/webrtc/stats/transportStats.js.map +1 -1
  236. package/lib/webrtc/stats/transportStatsBuilder.js.map +1 -1
  237. package/lib/webrtc/stats/valueFormatter.js +11 -11
  238. package/lib/webrtc/stats/valueFormatter.js.map +1 -1
  239. package/lib/xrpl/identity.d.ts +28 -0
  240. package/lib/xrpl/identity.d.ts.map +1 -0
  241. package/lib/xrpl/identity.js +213 -0
  242. package/lib/xrpl/identity.js.map +1 -0
  243. package/lib/xrpl/trust.d.ts +8 -0
  244. package/lib/xrpl/trust.d.ts.map +1 -0
  245. package/lib/xrpl/trust.js +61 -0
  246. package/lib/xrpl/trust.js.map +1 -0
  247. package/lib/xrpl/verification.d.ts +26 -0
  248. package/lib/xrpl/verification.d.ts.map +1 -0
  249. package/lib/xrpl/verification.js +295 -0
  250. package/lib/xrpl/verification.js.map +1 -0
  251. package/package.json +130 -129
  252. package/src/@types/AESEncryptedSecretStoragePayload.ts +29 -29
  253. package/src/@types/IIdentityServerProvider.ts +24 -24
  254. package/src/@types/PushRules.ts +208 -208
  255. package/src/@types/another-json.d.ts +19 -19
  256. package/src/@types/auth.ts +340 -258
  257. package/src/@types/beacon.ts +140 -140
  258. package/src/@types/common.ts +24 -24
  259. package/src/@types/crypto.ts +71 -71
  260. package/src/@types/event.ts +508 -449
  261. package/src/@types/events.ts +119 -119
  262. package/src/@types/extensible_events.ts +147 -147
  263. package/src/@types/local_notifications.ts +19 -19
  264. package/src/@types/location.ts +92 -92
  265. package/src/@types/matrix-sdk-crypto-wasm.d.ts +39 -39
  266. package/src/@types/media.ts +245 -245
  267. package/src/@types/membership.ts +57 -57
  268. package/src/@types/partials.ts +103 -103
  269. package/src/@types/polls.ts +120 -120
  270. package/src/@types/read_receipts.ts +61 -61
  271. package/src/@types/registration.ts +102 -102
  272. package/src/@types/search.ts +119 -119
  273. package/src/@types/signed.ts +25 -25
  274. package/src/@types/spaces.ts +37 -37
  275. package/src/@types/state_events.ts +153 -153
  276. package/src/@types/synapse.ts +40 -40
  277. package/src/@types/sync.ts +27 -27
  278. package/src/@types/threepids.ts +29 -29
  279. package/src/@types/topic.ts +69 -69
  280. package/src/@types/uia.ts +24 -24
  281. package/src/NamespacedValue.ts +121 -121
  282. package/src/ReEmitter.ts +93 -93
  283. package/src/base64.ts +86 -86
  284. package/src/briij.ts +4 -0
  285. package/src/client.ts +183 -10
  286. package/src/common-crypto/README.md +4 -4
  287. package/src/common-crypto/key-passphrase.ts +43 -43
  288. package/src/content-helpers.ts +298 -298
  289. package/src/content-repo.ts +122 -122
  290. package/src/crypto/store/base.ts +388 -388
  291. package/src/crypto/store/indexeddb-crypto-store-backend.ts +655 -655
  292. package/src/crypto/store/indexeddb-crypto-store.ts +555 -555
  293. package/src/crypto/store/localStorage-crypto-store.ts +409 -409
  294. package/src/crypto/store/memory-crypto-store.ts +326 -326
  295. package/src/crypto-api/CryptoEventHandlerMap.ts +42 -42
  296. package/src/crypto-api/key-passphrase.ts +58 -58
  297. package/src/crypto-api/keybackup.ts +114 -114
  298. package/src/crypto-api/recovery-key.ts +69 -69
  299. package/src/digest.ts +34 -34
  300. package/src/extensible_events_v1/ExtensibleEvent.ts +58 -58
  301. package/src/extensible_events_v1/InvalidEventError.ts +24 -24
  302. package/src/extensible_events_v1/MessageEvent.ts +143 -143
  303. package/src/extensible_events_v1/PollEndEvent.ts +97 -97
  304. package/src/extensible_events_v1/PollResponseEvent.ts +148 -148
  305. package/src/extensible_events_v1/PollStartEvent.ts +207 -207
  306. package/src/extensible_events_v1/utilities.ts +35 -35
  307. package/src/feature.ts +88 -88
  308. package/src/http-api/method.ts +25 -25
  309. package/src/http-api/prefix.ts +48 -48
  310. package/src/indexeddb-helpers.ts +50 -50
  311. package/src/indexeddb-worker.ts +24 -24
  312. package/src/matrixrtc/IKeyTransport.ts +63 -63
  313. package/src/matrixrtc/IMembershipManager.ts +120 -120
  314. package/src/matrixrtc/LivekitTransport.ts +46 -46
  315. package/src/matrixrtc/index.ts +24 -24
  316. package/src/matrixrtc/utils.ts +71 -71
  317. package/src/models/ToDeviceMessage.ts +38 -38
  318. package/src/models/device.ts +85 -85
  319. package/src/models/event-status.ts +39 -39
  320. package/src/models/invites-ignorer-types.ts +58 -58
  321. package/src/models/profile-keys.ts +33 -33
  322. package/src/models/room-summary.ts +78 -78
  323. package/src/models/search-result.ts +57 -57
  324. package/src/models/typed-event-emitter.ts +246 -246
  325. package/src/oidc/authorize.ts +279 -279
  326. package/src/oidc/error.ts +33 -33
  327. package/src/oidc/index.ts +33 -33
  328. package/src/oidc/register.ts +163 -163
  329. package/src/oidc/tokenRefresher.ts +184 -184
  330. package/src/oidc/validate.ts +265 -265
  331. package/src/randomstring.ts +103 -103
  332. package/src/realtime-callbacks.ts +191 -191
  333. package/src/receipt-accumulator.ts +189 -189
  334. package/src/rendezvous/RendezvousChannel.ts +48 -48
  335. package/src/rendezvous/RendezvousCode.ts +25 -25
  336. package/src/rendezvous/RendezvousError.ts +26 -26
  337. package/src/rendezvous/RendezvousFailureReason.ts +49 -49
  338. package/src/rendezvous/RendezvousIntent.ts +20 -20
  339. package/src/rendezvous/RendezvousTransport.ts +58 -58
  340. package/src/rendezvous/channels/MSC4108SecureChannel.ts +270 -270
  341. package/src/rendezvous/channels/index.ts +17 -17
  342. package/src/rendezvous/index.ts +25 -25
  343. package/src/rendezvous/transports/index.ts +17 -17
  344. package/src/rust-crypto/CrossSigningIdentity.ts +195 -195
  345. package/src/rust-crypto/OutgoingRequestsManager.ts +170 -170
  346. package/src/rust-crypto/device-converter.ts +128 -128
  347. package/src/rust-crypto/secret-storage.ts +60 -60
  348. package/src/service-types.ts +20 -20
  349. package/src/store/local-storage-events-emitter.ts +46 -46
  350. package/src/sync-accumulator.ts +779 -779
  351. package/src/thread-utils.ts +31 -31
  352. package/src/types.ts +59 -59
  353. package/src/utils/decryptAESSecretStorageItem.ts +54 -54
  354. package/src/utils/encryptAESSecretStorageItem.ts +73 -73
  355. package/src/utils/internal/deriveKeys.ts +63 -63
  356. package/src/utils/roomVersion.ts +35 -35
  357. package/src/version-support.ts +50 -50
  358. package/src/wallet-recovery.ts +252 -0
  359. package/src/webrtc/audioContext.ts +44 -44
  360. package/src/webrtc/callEventTypes.ts +101 -101
  361. package/src/webrtc/stats/callFeedStatsReporter.ts +91 -91
  362. package/src/webrtc/stats/callStatsReportGatherer.ts +219 -219
  363. package/src/webrtc/stats/callStatsReportSummary.ts +30 -30
  364. package/src/webrtc/stats/connectionStats.ts +47 -47
  365. package/src/webrtc/stats/connectionStatsBuilder.ts +28 -28
  366. package/src/webrtc/stats/connectionStatsReportBuilder.ts +140 -140
  367. package/src/webrtc/stats/groupCallStats.ts +93 -93
  368. package/src/webrtc/stats/media/mediaSsrcHandler.ts +57 -57
  369. package/src/webrtc/stats/media/mediaTrackHandler.ts +70 -70
  370. package/src/webrtc/stats/media/mediaTrackStats.ts +176 -176
  371. package/src/webrtc/stats/media/mediaTrackStatsHandler.ts +90 -90
  372. package/src/webrtc/stats/statsReport.ts +133 -133
  373. package/src/webrtc/stats/statsReportEmitter.ts +49 -49
  374. package/src/webrtc/stats/trackStatsBuilder.ts +207 -207
  375. package/src/webrtc/stats/transportStats.ts +26 -26
  376. package/src/webrtc/stats/transportStatsBuilder.ts +48 -48
  377. package/src/webrtc/stats/valueFormatter.ts +27 -27
  378. package/src/xrpl/identity.ts +245 -0
  379. package/src/xrpl/trust.ts +64 -0
  380. package/src/xrpl/verification.ts +284 -0
@@ -1,270 +1,270 @@
1
- /*
2
- Copyright 2024 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 {
18
- type Curve25519PublicKey,
19
- Ecies,
20
- type EstablishedEcies,
21
- QrCodeData,
22
- QrCodeMode,
23
- } from "@matrix-org/matrix-sdk-crypto-wasm";
24
-
25
- import {
26
- ClientRendezvousFailureReason,
27
- MSC4108FailureReason,
28
- type MSC4108Payload,
29
- RendezvousError,
30
- type RendezvousFailureListener,
31
- } from "../index.ts";
32
- import { type MSC4108RendezvousSession } from "../transports/MSC4108RendezvousSession.ts";
33
- import { logger } from "../../logger.ts";
34
-
35
- /**
36
- * Prototype of the unstable [MSC4108](https://github.com/matrix-org/matrix-spec-proposals/pull/4108)
37
- * secure rendezvous session protocol.
38
- * @experimental Note that this is UNSTABLE and may have breaking changes without notice.
39
- * Imports @matrix-org/matrix-sdk-crypto-wasm so should be async-imported to avoid bundling the WASM into the main bundle.
40
- */
41
- export class MSC4108SecureChannel {
42
- private readonly secureChannel: Ecies;
43
- private establishedChannel?: EstablishedEcies;
44
- private connected = false;
45
-
46
- public constructor(
47
- private rendezvousSession: MSC4108RendezvousSession,
48
- private theirPublicKey?: Curve25519PublicKey,
49
- public onFailure?: RendezvousFailureListener,
50
- ) {
51
- this.secureChannel = new Ecies();
52
- }
53
-
54
- /**
55
- * Generate a QR code for the current session.
56
- * @param mode the mode to generate the QR code in, either `Login` or `Reciprocate`.
57
- * @param serverName the name of the homeserver to connect to, as defined by server discovery in the spec, required for `Reciprocate` mode.
58
- */
59
- public async generateCode(mode: QrCodeMode.Login): Promise<Uint8Array>;
60
- public async generateCode(mode: QrCodeMode.Reciprocate, serverName: string): Promise<Uint8Array>;
61
- public async generateCode(mode: QrCodeMode, serverName?: string): Promise<Uint8Array> {
62
- const { url } = this.rendezvousSession;
63
-
64
- if (!url) {
65
- throw new Error("No rendezvous session URL");
66
- }
67
-
68
- return new QrCodeData(
69
- this.secureChannel.public_key(),
70
- url,
71
- mode === QrCodeMode.Reciprocate ? serverName : undefined,
72
- ).toBytes();
73
- }
74
-
75
- /**
76
- * Returns the check code for the secure channel or undefined if not generated yet.
77
- */
78
- public getCheckCode(): string | undefined {
79
- const x = this.establishedChannel?.check_code();
80
-
81
- if (!x) {
82
- return undefined;
83
- }
84
- return Array.from(x.as_bytes())
85
- .map((b) => `${b % 10}`)
86
- .join("");
87
- }
88
-
89
- /**
90
- * Connects and establishes a secure channel with the other device.
91
- */
92
- public async connect(): Promise<void> {
93
- if (this.connected) {
94
- throw new Error("Channel already connected");
95
- }
96
-
97
- if (this.theirPublicKey) {
98
- // We are the scanning device
99
- const result = this.secureChannel.establish_outbound_channel(
100
- this.theirPublicKey,
101
- "MATRIX_QR_CODE_LOGIN_INITIATE",
102
- );
103
- this.establishedChannel = result.channel;
104
-
105
- /*
106
- Secure Channel step 4. Device S sends the initial message
107
-
108
- Nonce := 0
109
- SH := ECDH(Ss, Gp)
110
- EncKey := HKDF_SHA256(SH, "MATRIX_QR_CODE_LOGIN|" || Gp || "|" || Sp, 0, 32)
111
- TaggedCiphertext := ChaCha20Poly1305_Encrypt(EncKey, Nonce, "MATRIX_QR_CODE_LOGIN_INITIATE")
112
- Nonce := Nonce + 2
113
- LoginInitiateMessage := UnpaddedBase64(TaggedCiphertext) || "|" || UnpaddedBase64(Sp)
114
- */
115
- {
116
- logger.info("Sending LoginInitiateMessage");
117
- await this.rendezvousSession.send(result.initial_message);
118
- }
119
-
120
- /*
121
- Secure Channel step 6. Verification by Device S
122
-
123
- Nonce_G := 1
124
- (TaggedCiphertext, Sp) := Unpack(Message)
125
- Plaintext := ChaCha20Poly1305_Decrypt(EncKey, Nonce_G, TaggedCiphertext)
126
- Nonce_G := Nonce_G + 2
127
-
128
- unless Plaintext == "MATRIX_QR_CODE_LOGIN_OK":
129
- FAIL
130
- */
131
- {
132
- logger.info("Waiting for LoginOkMessage");
133
- const ciphertext = await this.rendezvousSession.receive();
134
-
135
- if (!ciphertext) {
136
- throw new RendezvousError(
137
- "No response from other device",
138
- MSC4108FailureReason.UnexpectedMessageReceived,
139
- );
140
- }
141
- const candidateLoginOkMessage = await this.decrypt(ciphertext);
142
-
143
- if (candidateLoginOkMessage !== "MATRIX_QR_CODE_LOGIN_OK") {
144
- throw new RendezvousError(
145
- "Invalid response from other device",
146
- ClientRendezvousFailureReason.InsecureChannelDetected,
147
- );
148
- }
149
-
150
- // Step 6 is now complete. We trust the channel
151
- }
152
- } else {
153
- /*
154
- Secure Channel step 5. Device G confirms
155
-
156
- Nonce_S := 0
157
- (TaggedCiphertext, Sp) := Unpack(LoginInitiateMessage)
158
- SH := ECDH(Gs, Sp)
159
- EncKey := HKDF_SHA256(SH, "MATRIX_QR_CODE_LOGIN|" || Gp || "|" || Sp, 0, 32)
160
- Plaintext := ChaCha20Poly1305_Decrypt(EncKey, Nonce_S, TaggedCiphertext)
161
- Nonce_S := Nonce_S + 2
162
- */
163
- // wait for the other side to send us their public key
164
- logger.info("Waiting for LoginInitiateMessage");
165
- const loginInitiateMessage = await this.rendezvousSession.receive();
166
- if (!loginInitiateMessage) {
167
- throw new Error("No response from other device");
168
- }
169
-
170
- const { channel, message: candidateLoginInitiateMessage } =
171
- this.secureChannel.establish_inbound_channel(loginInitiateMessage);
172
- this.establishedChannel = channel;
173
-
174
- if (candidateLoginInitiateMessage !== "MATRIX_QR_CODE_LOGIN_INITIATE") {
175
- throw new RendezvousError(
176
- "Invalid response from other device",
177
- ClientRendezvousFailureReason.InsecureChannelDetected,
178
- );
179
- }
180
- logger.info("LoginInitiateMessage received");
181
-
182
- logger.info("Sending LoginOkMessage");
183
- const loginOkMessage = await this.encrypt("MATRIX_QR_CODE_LOGIN_OK");
184
- await this.rendezvousSession.send(loginOkMessage);
185
-
186
- // Step 5 is complete. We don't yet trust the channel
187
-
188
- // next step will be for the user to confirm the check code on the other device
189
- }
190
-
191
- this.connected = true;
192
- }
193
-
194
- private async decrypt(ciphertext: string): Promise<string> {
195
- if (!this.establishedChannel) {
196
- throw new Error("Channel closed");
197
- }
198
-
199
- return this.establishedChannel.decrypt(ciphertext);
200
- }
201
-
202
- private async encrypt(plaintext: string): Promise<string> {
203
- if (!this.establishedChannel) {
204
- throw new Error("Channel closed");
205
- }
206
-
207
- return this.establishedChannel.encrypt(plaintext);
208
- }
209
-
210
- /**
211
- * Sends a payload securely to the other device.
212
- * @param payload the payload to encrypt and send
213
- */
214
- public async secureSend<T extends MSC4108Payload>(payload: T): Promise<void> {
215
- if (!this.connected) {
216
- throw new Error("Channel closed");
217
- }
218
-
219
- const stringifiedPayload = JSON.stringify(payload);
220
- logger.debug(`=> {"type": ${JSON.stringify(payload.type)}, ...}`);
221
-
222
- await this.rendezvousSession.send(await this.encrypt(stringifiedPayload));
223
- }
224
-
225
- /**
226
- * Receives an encrypted payload from the other device and decrypts it.
227
- */
228
- public async secureReceive<T extends MSC4108Payload>(): Promise<Partial<T> | undefined> {
229
- if (!this.establishedChannel) {
230
- throw new Error("Channel closed");
231
- }
232
-
233
- const ciphertext = await this.rendezvousSession.receive();
234
- if (!ciphertext) {
235
- return undefined;
236
- }
237
- const plaintext = await this.decrypt(ciphertext);
238
- const json = JSON.parse(plaintext);
239
-
240
- logger.debug(`<= {"type": ${JSON.stringify(json.type)}, ...}`);
241
- return json as Partial<T> | undefined;
242
- }
243
-
244
- /**
245
- * Closes the secure channel.
246
- */
247
- public async close(): Promise<void> {
248
- await this.rendezvousSession.close();
249
- }
250
-
251
- /**
252
- * Cancels the secure channel.
253
- * @param reason the reason for the cancellation
254
- */
255
- public async cancel(reason: MSC4108FailureReason | ClientRendezvousFailureReason): Promise<void> {
256
- try {
257
- await this.rendezvousSession.cancel(reason);
258
- this.onFailure?.(reason);
259
- } finally {
260
- await this.close();
261
- }
262
- }
263
-
264
- /**
265
- * Returns whether the rendezvous session has been cancelled.
266
- */
267
- public get cancelled(): boolean {
268
- return this.rendezvousSession.cancelled;
269
- }
270
- }
1
+ /*
2
+ Copyright 2024 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 {
18
+ type Curve25519PublicKey,
19
+ Ecies,
20
+ type EstablishedEcies,
21
+ QrCodeData,
22
+ QrCodeMode,
23
+ } from "@matrix-org/matrix-sdk-crypto-wasm";
24
+
25
+ import {
26
+ ClientRendezvousFailureReason,
27
+ MSC4108FailureReason,
28
+ type MSC4108Payload,
29
+ RendezvousError,
30
+ type RendezvousFailureListener,
31
+ } from "../index.ts";
32
+ import { type MSC4108RendezvousSession } from "../transports/MSC4108RendezvousSession.ts";
33
+ import { logger } from "../../logger.ts";
34
+
35
+ /**
36
+ * Prototype of the unstable [MSC4108](https://github.com/matrix-org/matrix-spec-proposals/pull/4108)
37
+ * secure rendezvous session protocol.
38
+ * @experimental Note that this is UNSTABLE and may have breaking changes without notice.
39
+ * Imports @matrix-org/matrix-sdk-crypto-wasm so should be async-imported to avoid bundling the WASM into the main bundle.
40
+ */
41
+ export class MSC4108SecureChannel {
42
+ private readonly secureChannel: Ecies;
43
+ private establishedChannel?: EstablishedEcies;
44
+ private connected = false;
45
+
46
+ public constructor(
47
+ private rendezvousSession: MSC4108RendezvousSession,
48
+ private theirPublicKey?: Curve25519PublicKey,
49
+ public onFailure?: RendezvousFailureListener,
50
+ ) {
51
+ this.secureChannel = new Ecies();
52
+ }
53
+
54
+ /**
55
+ * Generate a QR code for the current session.
56
+ * @param mode the mode to generate the QR code in, either `Login` or `Reciprocate`.
57
+ * @param serverName the name of the homeserver to connect to, as defined by server discovery in the spec, required for `Reciprocate` mode.
58
+ */
59
+ public async generateCode(mode: QrCodeMode.Login): Promise<Uint8Array>;
60
+ public async generateCode(mode: QrCodeMode.Reciprocate, serverName: string): Promise<Uint8Array>;
61
+ public async generateCode(mode: QrCodeMode, serverName?: string): Promise<Uint8Array> {
62
+ const { url } = this.rendezvousSession;
63
+
64
+ if (!url) {
65
+ throw new Error("No rendezvous session URL");
66
+ }
67
+
68
+ return new QrCodeData(
69
+ this.secureChannel.public_key(),
70
+ url,
71
+ mode === QrCodeMode.Reciprocate ? serverName : undefined,
72
+ ).toBytes();
73
+ }
74
+
75
+ /**
76
+ * Returns the check code for the secure channel or undefined if not generated yet.
77
+ */
78
+ public getCheckCode(): string | undefined {
79
+ const x = this.establishedChannel?.check_code();
80
+
81
+ if (!x) {
82
+ return undefined;
83
+ }
84
+ return Array.from(x.as_bytes())
85
+ .map((b) => `${b % 10}`)
86
+ .join("");
87
+ }
88
+
89
+ /**
90
+ * Connects and establishes a secure channel with the other device.
91
+ */
92
+ public async connect(): Promise<void> {
93
+ if (this.connected) {
94
+ throw new Error("Channel already connected");
95
+ }
96
+
97
+ if (this.theirPublicKey) {
98
+ // We are the scanning device
99
+ const result = this.secureChannel.establish_outbound_channel(
100
+ this.theirPublicKey,
101
+ "MATRIX_QR_CODE_LOGIN_INITIATE",
102
+ );
103
+ this.establishedChannel = result.channel;
104
+
105
+ /*
106
+ Secure Channel step 4. Device S sends the initial message
107
+
108
+ Nonce := 0
109
+ SH := ECDH(Ss, Gp)
110
+ EncKey := HKDF_SHA256(SH, "MATRIX_QR_CODE_LOGIN|" || Gp || "|" || Sp, 0, 32)
111
+ TaggedCiphertext := ChaCha20Poly1305_Encrypt(EncKey, Nonce, "MATRIX_QR_CODE_LOGIN_INITIATE")
112
+ Nonce := Nonce + 2
113
+ LoginInitiateMessage := UnpaddedBase64(TaggedCiphertext) || "|" || UnpaddedBase64(Sp)
114
+ */
115
+ {
116
+ logger.info("Sending LoginInitiateMessage");
117
+ await this.rendezvousSession.send(result.initial_message);
118
+ }
119
+
120
+ /*
121
+ Secure Channel step 6. Verification by Device S
122
+
123
+ Nonce_G := 1
124
+ (TaggedCiphertext, Sp) := Unpack(Message)
125
+ Plaintext := ChaCha20Poly1305_Decrypt(EncKey, Nonce_G, TaggedCiphertext)
126
+ Nonce_G := Nonce_G + 2
127
+
128
+ unless Plaintext == "MATRIX_QR_CODE_LOGIN_OK":
129
+ FAIL
130
+ */
131
+ {
132
+ logger.info("Waiting for LoginOkMessage");
133
+ const ciphertext = await this.rendezvousSession.receive();
134
+
135
+ if (!ciphertext) {
136
+ throw new RendezvousError(
137
+ "No response from other device",
138
+ MSC4108FailureReason.UnexpectedMessageReceived,
139
+ );
140
+ }
141
+ const candidateLoginOkMessage = await this.decrypt(ciphertext);
142
+
143
+ if (candidateLoginOkMessage !== "MATRIX_QR_CODE_LOGIN_OK") {
144
+ throw new RendezvousError(
145
+ "Invalid response from other device",
146
+ ClientRendezvousFailureReason.InsecureChannelDetected,
147
+ );
148
+ }
149
+
150
+ // Step 6 is now complete. We trust the channel
151
+ }
152
+ } else {
153
+ /*
154
+ Secure Channel step 5. Device G confirms
155
+
156
+ Nonce_S := 0
157
+ (TaggedCiphertext, Sp) := Unpack(LoginInitiateMessage)
158
+ SH := ECDH(Gs, Sp)
159
+ EncKey := HKDF_SHA256(SH, "MATRIX_QR_CODE_LOGIN|" || Gp || "|" || Sp, 0, 32)
160
+ Plaintext := ChaCha20Poly1305_Decrypt(EncKey, Nonce_S, TaggedCiphertext)
161
+ Nonce_S := Nonce_S + 2
162
+ */
163
+ // wait for the other side to send us their public key
164
+ logger.info("Waiting for LoginInitiateMessage");
165
+ const loginInitiateMessage = await this.rendezvousSession.receive();
166
+ if (!loginInitiateMessage) {
167
+ throw new Error("No response from other device");
168
+ }
169
+
170
+ const { channel, message: candidateLoginInitiateMessage } =
171
+ this.secureChannel.establish_inbound_channel(loginInitiateMessage);
172
+ this.establishedChannel = channel;
173
+
174
+ if (candidateLoginInitiateMessage !== "MATRIX_QR_CODE_LOGIN_INITIATE") {
175
+ throw new RendezvousError(
176
+ "Invalid response from other device",
177
+ ClientRendezvousFailureReason.InsecureChannelDetected,
178
+ );
179
+ }
180
+ logger.info("LoginInitiateMessage received");
181
+
182
+ logger.info("Sending LoginOkMessage");
183
+ const loginOkMessage = await this.encrypt("MATRIX_QR_CODE_LOGIN_OK");
184
+ await this.rendezvousSession.send(loginOkMessage);
185
+
186
+ // Step 5 is complete. We don't yet trust the channel
187
+
188
+ // next step will be for the user to confirm the check code on the other device
189
+ }
190
+
191
+ this.connected = true;
192
+ }
193
+
194
+ private async decrypt(ciphertext: string): Promise<string> {
195
+ if (!this.establishedChannel) {
196
+ throw new Error("Channel closed");
197
+ }
198
+
199
+ return this.establishedChannel.decrypt(ciphertext);
200
+ }
201
+
202
+ private async encrypt(plaintext: string): Promise<string> {
203
+ if (!this.establishedChannel) {
204
+ throw new Error("Channel closed");
205
+ }
206
+
207
+ return this.establishedChannel.encrypt(plaintext);
208
+ }
209
+
210
+ /**
211
+ * Sends a payload securely to the other device.
212
+ * @param payload the payload to encrypt and send
213
+ */
214
+ public async secureSend<T extends MSC4108Payload>(payload: T): Promise<void> {
215
+ if (!this.connected) {
216
+ throw new Error("Channel closed");
217
+ }
218
+
219
+ const stringifiedPayload = JSON.stringify(payload);
220
+ logger.debug(`=> {"type": ${JSON.stringify(payload.type)}, ...}`);
221
+
222
+ await this.rendezvousSession.send(await this.encrypt(stringifiedPayload));
223
+ }
224
+
225
+ /**
226
+ * Receives an encrypted payload from the other device and decrypts it.
227
+ */
228
+ public async secureReceive<T extends MSC4108Payload>(): Promise<Partial<T> | undefined> {
229
+ if (!this.establishedChannel) {
230
+ throw new Error("Channel closed");
231
+ }
232
+
233
+ const ciphertext = await this.rendezvousSession.receive();
234
+ if (!ciphertext) {
235
+ return undefined;
236
+ }
237
+ const plaintext = await this.decrypt(ciphertext);
238
+ const json = JSON.parse(plaintext);
239
+
240
+ logger.debug(`<= {"type": ${JSON.stringify(json.type)}, ...}`);
241
+ return json as Partial<T> | undefined;
242
+ }
243
+
244
+ /**
245
+ * Closes the secure channel.
246
+ */
247
+ public async close(): Promise<void> {
248
+ await this.rendezvousSession.close();
249
+ }
250
+
251
+ /**
252
+ * Cancels the secure channel.
253
+ * @param reason the reason for the cancellation
254
+ */
255
+ public async cancel(reason: MSC4108FailureReason | ClientRendezvousFailureReason): Promise<void> {
256
+ try {
257
+ await this.rendezvousSession.cancel(reason);
258
+ this.onFailure?.(reason);
259
+ } finally {
260
+ await this.close();
261
+ }
262
+ }
263
+
264
+ /**
265
+ * Returns whether the rendezvous session has been cancelled.
266
+ */
267
+ public get cancelled(): boolean {
268
+ return this.rendezvousSession.cancelled;
269
+ }
270
+ }
@@ -1,17 +1,17 @@
1
- /*
2
- Copyright 2022 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 * from "./MSC4108SecureChannel.ts";
1
+ /*
2
+ Copyright 2022 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 * from "./MSC4108SecureChannel.ts";
@@ -1,25 +1,25 @@
1
- /*
2
- Copyright 2022 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 * from "./MSC4108SignInWithQR.ts";
18
- export type * from "./RendezvousChannel.ts";
19
- export type * from "./RendezvousCode.ts";
20
- export * from "./RendezvousError.ts";
21
- export * from "./RendezvousFailureReason.ts";
22
- export * from "./RendezvousIntent.ts";
23
- export type * from "./RendezvousTransport.ts";
24
- export * from "./transports/index.ts";
25
- export * from "./channels/index.ts";
1
+ /*
2
+ Copyright 2022 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 * from "./MSC4108SignInWithQR.ts";
18
+ export type * from "./RendezvousChannel.ts";
19
+ export type * from "./RendezvousCode.ts";
20
+ export * from "./RendezvousError.ts";
21
+ export * from "./RendezvousFailureReason.ts";
22
+ export * from "./RendezvousIntent.ts";
23
+ export type * from "./RendezvousTransport.ts";
24
+ export * from "./transports/index.ts";
25
+ export * from "./channels/index.ts";
@@ -1,17 +1,17 @@
1
- /*
2
- Copyright 2022 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 * from "./MSC4108RendezvousSession.ts";
1
+ /*
2
+ Copyright 2022 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 * from "./MSC4108RendezvousSession.ts";