@textrp/briij-js-sdk 41.0.1 → 42.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 (375) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/LICENSE +177 -177
  3. package/README.md +14 -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 +19 -1
  10. package/lib/@types/auth.d.ts.map +1 -1
  11. package/lib/@types/auth.js +55 -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 +27 -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 +3 -0
  58. package/lib/briij.d.ts.map +1 -1
  59. package/lib/briij.js +3 -0
  60. package/lib/briij.js.map +1 -1
  61. package/lib/client.d.ts +18 -1
  62. package/lib/client.d.ts.map +1 -1
  63. package/lib/client.js +166 -103
  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/webrtc/audioContext.js +24 -24
  202. package/lib/webrtc/audioContext.js.map +1 -1
  203. package/lib/webrtc/callEventTypes.js.map +1 -1
  204. package/lib/webrtc/stats/callFeedStatsReporter.js +14 -14
  205. package/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -1
  206. package/lib/webrtc/stats/callStatsReportGatherer.js +14 -14
  207. package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -1
  208. package/lib/webrtc/stats/callStatsReportSummary.js.map +1 -1
  209. package/lib/webrtc/stats/connectionStats.js +14 -14
  210. package/lib/webrtc/stats/connectionStats.js.map +1 -1
  211. package/lib/webrtc/stats/connectionStatsBuilder.js +14 -14
  212. package/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -1
  213. package/lib/webrtc/stats/connectionStatsReportBuilder.js +14 -14
  214. package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -1
  215. package/lib/webrtc/stats/groupCallStats.js +14 -14
  216. package/lib/webrtc/stats/groupCallStats.js.map +1 -1
  217. package/lib/webrtc/stats/media/mediaSsrcHandler.js +14 -14
  218. package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -1
  219. package/lib/webrtc/stats/media/mediaTrackHandler.js +14 -14
  220. package/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -1
  221. package/lib/webrtc/stats/media/mediaTrackStats.js +27 -27
  222. package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -1
  223. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +20 -20
  224. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -1
  225. package/lib/webrtc/stats/statsReport.js +14 -14
  226. package/lib/webrtc/stats/statsReport.js.map +1 -1
  227. package/lib/webrtc/stats/statsReportEmitter.js +14 -14
  228. package/lib/webrtc/stats/statsReportEmitter.js.map +1 -1
  229. package/lib/webrtc/stats/trackStatsBuilder.js +4 -4
  230. package/lib/webrtc/stats/trackStatsBuilder.js.map +1 -1
  231. package/lib/webrtc/stats/transportStats.js.map +1 -1
  232. package/lib/webrtc/stats/transportStatsBuilder.js.map +1 -1
  233. package/lib/webrtc/stats/valueFormatter.js +11 -11
  234. package/lib/webrtc/stats/valueFormatter.js.map +1 -1
  235. package/lib/xrpl/identity.d.ts +28 -0
  236. package/lib/xrpl/identity.d.ts.map +1 -0
  237. package/lib/xrpl/identity.js +213 -0
  238. package/lib/xrpl/identity.js.map +1 -0
  239. package/lib/xrpl/trust.d.ts +8 -0
  240. package/lib/xrpl/trust.d.ts.map +1 -0
  241. package/lib/xrpl/trust.js +61 -0
  242. package/lib/xrpl/trust.js.map +1 -0
  243. package/lib/xrpl/verification.d.ts +26 -0
  244. package/lib/xrpl/verification.d.ts.map +1 -0
  245. package/lib/xrpl/verification.js +295 -0
  246. package/lib/xrpl/verification.js.map +1 -0
  247. package/package.json +128 -129
  248. package/src/@types/AESEncryptedSecretStoragePayload.ts +29 -29
  249. package/src/@types/IIdentityServerProvider.ts +24 -24
  250. package/src/@types/PushRules.ts +208 -208
  251. package/src/@types/another-json.d.ts +19 -19
  252. package/src/@types/auth.ts +280 -258
  253. package/src/@types/beacon.ts +140 -140
  254. package/src/@types/common.ts +24 -24
  255. package/src/@types/crypto.ts +71 -71
  256. package/src/@types/event.ts +476 -449
  257. package/src/@types/events.ts +119 -119
  258. package/src/@types/extensible_events.ts +147 -147
  259. package/src/@types/local_notifications.ts +19 -19
  260. package/src/@types/location.ts +92 -92
  261. package/src/@types/matrix-sdk-crypto-wasm.d.ts +39 -39
  262. package/src/@types/media.ts +245 -245
  263. package/src/@types/membership.ts +57 -57
  264. package/src/@types/partials.ts +103 -103
  265. package/src/@types/polls.ts +120 -120
  266. package/src/@types/read_receipts.ts +61 -61
  267. package/src/@types/registration.ts +102 -102
  268. package/src/@types/search.ts +119 -119
  269. package/src/@types/signed.ts +25 -25
  270. package/src/@types/spaces.ts +37 -37
  271. package/src/@types/state_events.ts +153 -153
  272. package/src/@types/synapse.ts +40 -40
  273. package/src/@types/sync.ts +27 -27
  274. package/src/@types/threepids.ts +29 -29
  275. package/src/@types/topic.ts +69 -69
  276. package/src/@types/uia.ts +24 -24
  277. package/src/NamespacedValue.ts +121 -121
  278. package/src/ReEmitter.ts +93 -93
  279. package/src/base64.ts +86 -86
  280. package/src/briij.ts +3 -0
  281. package/src/client.ts +90 -10
  282. package/src/common-crypto/README.md +4 -4
  283. package/src/common-crypto/key-passphrase.ts +43 -43
  284. package/src/content-helpers.ts +298 -298
  285. package/src/content-repo.ts +122 -122
  286. package/src/crypto/store/base.ts +388 -388
  287. package/src/crypto/store/indexeddb-crypto-store-backend.ts +655 -655
  288. package/src/crypto/store/indexeddb-crypto-store.ts +555 -555
  289. package/src/crypto/store/localStorage-crypto-store.ts +409 -409
  290. package/src/crypto/store/memory-crypto-store.ts +326 -326
  291. package/src/crypto-api/CryptoEventHandlerMap.ts +42 -42
  292. package/src/crypto-api/key-passphrase.ts +58 -58
  293. package/src/crypto-api/keybackup.ts +114 -114
  294. package/src/crypto-api/recovery-key.ts +69 -69
  295. package/src/digest.ts +34 -34
  296. package/src/extensible_events_v1/ExtensibleEvent.ts +58 -58
  297. package/src/extensible_events_v1/InvalidEventError.ts +24 -24
  298. package/src/extensible_events_v1/MessageEvent.ts +143 -143
  299. package/src/extensible_events_v1/PollEndEvent.ts +97 -97
  300. package/src/extensible_events_v1/PollResponseEvent.ts +148 -148
  301. package/src/extensible_events_v1/PollStartEvent.ts +207 -207
  302. package/src/extensible_events_v1/utilities.ts +35 -35
  303. package/src/feature.ts +88 -88
  304. package/src/http-api/method.ts +25 -25
  305. package/src/http-api/prefix.ts +48 -48
  306. package/src/indexeddb-helpers.ts +50 -50
  307. package/src/indexeddb-worker.ts +24 -24
  308. package/src/matrixrtc/IKeyTransport.ts +63 -63
  309. package/src/matrixrtc/IMembershipManager.ts +120 -120
  310. package/src/matrixrtc/LivekitTransport.ts +46 -46
  311. package/src/matrixrtc/index.ts +24 -24
  312. package/src/matrixrtc/utils.ts +71 -71
  313. package/src/models/ToDeviceMessage.ts +38 -38
  314. package/src/models/device.ts +85 -85
  315. package/src/models/event-status.ts +39 -39
  316. package/src/models/invites-ignorer-types.ts +58 -58
  317. package/src/models/profile-keys.ts +33 -33
  318. package/src/models/room-summary.ts +78 -78
  319. package/src/models/search-result.ts +57 -57
  320. package/src/models/typed-event-emitter.ts +246 -246
  321. package/src/oidc/authorize.ts +279 -279
  322. package/src/oidc/error.ts +33 -33
  323. package/src/oidc/index.ts +33 -33
  324. package/src/oidc/register.ts +163 -163
  325. package/src/oidc/tokenRefresher.ts +184 -184
  326. package/src/oidc/validate.ts +265 -265
  327. package/src/randomstring.ts +103 -103
  328. package/src/realtime-callbacks.ts +191 -191
  329. package/src/receipt-accumulator.ts +189 -189
  330. package/src/rendezvous/RendezvousChannel.ts +48 -48
  331. package/src/rendezvous/RendezvousCode.ts +25 -25
  332. package/src/rendezvous/RendezvousError.ts +26 -26
  333. package/src/rendezvous/RendezvousFailureReason.ts +49 -49
  334. package/src/rendezvous/RendezvousIntent.ts +20 -20
  335. package/src/rendezvous/RendezvousTransport.ts +58 -58
  336. package/src/rendezvous/channels/MSC4108SecureChannel.ts +270 -270
  337. package/src/rendezvous/channels/index.ts +17 -17
  338. package/src/rendezvous/index.ts +25 -25
  339. package/src/rendezvous/transports/index.ts +17 -17
  340. package/src/rust-crypto/CrossSigningIdentity.ts +195 -195
  341. package/src/rust-crypto/OutgoingRequestsManager.ts +170 -170
  342. package/src/rust-crypto/device-converter.ts +128 -128
  343. package/src/rust-crypto/secret-storage.ts +60 -60
  344. package/src/service-types.ts +20 -20
  345. package/src/store/local-storage-events-emitter.ts +46 -46
  346. package/src/sync-accumulator.ts +779 -779
  347. package/src/thread-utils.ts +31 -31
  348. package/src/types.ts +59 -59
  349. package/src/utils/decryptAESSecretStorageItem.ts +54 -54
  350. package/src/utils/encryptAESSecretStorageItem.ts +73 -73
  351. package/src/utils/internal/deriveKeys.ts +63 -63
  352. package/src/utils/roomVersion.ts +35 -35
  353. package/src/version-support.ts +50 -50
  354. package/src/webrtc/audioContext.ts +44 -44
  355. package/src/webrtc/callEventTypes.ts +101 -101
  356. package/src/webrtc/stats/callFeedStatsReporter.ts +91 -91
  357. package/src/webrtc/stats/callStatsReportGatherer.ts +219 -219
  358. package/src/webrtc/stats/callStatsReportSummary.ts +30 -30
  359. package/src/webrtc/stats/connectionStats.ts +47 -47
  360. package/src/webrtc/stats/connectionStatsBuilder.ts +28 -28
  361. package/src/webrtc/stats/connectionStatsReportBuilder.ts +140 -140
  362. package/src/webrtc/stats/groupCallStats.ts +93 -93
  363. package/src/webrtc/stats/media/mediaSsrcHandler.ts +57 -57
  364. package/src/webrtc/stats/media/mediaTrackHandler.ts +70 -70
  365. package/src/webrtc/stats/media/mediaTrackStats.ts +176 -176
  366. package/src/webrtc/stats/media/mediaTrackStatsHandler.ts +90 -90
  367. package/src/webrtc/stats/statsReport.ts +133 -133
  368. package/src/webrtc/stats/statsReportEmitter.ts +49 -49
  369. package/src/webrtc/stats/trackStatsBuilder.ts +207 -207
  370. package/src/webrtc/stats/transportStats.ts +26 -26
  371. package/src/webrtc/stats/transportStatsBuilder.ts +48 -48
  372. package/src/webrtc/stats/valueFormatter.ts +27 -27
  373. package/src/xrpl/identity.ts +245 -0
  374. package/src/xrpl/trust.ts +64 -0
  375. 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";