@textrp/briij-js-sdk 41.0.0 → 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 +47 -46
  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,279 +1,279 @@
1
- /*
2
- Copyright 2023 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 { type IdTokenClaims, Log, OidcClient, SigninResponse, SigninState, WebStorageStateStore } from "oidc-client-ts";
18
-
19
- import { logger } from "../logger.ts";
20
- import { secureRandomString } from "../randomstring.ts";
21
- import { OidcError } from "./error.ts";
22
- import {
23
- type BearerTokenResponse,
24
- type UserState,
25
- validateBearerTokenResponse,
26
- type ValidatedAuthMetadata,
27
- validateIdToken,
28
- validateStoredUserState,
29
- } from "./validate.ts";
30
- import { sha256 } from "../digest.ts";
31
- import { encodeUnpaddedBase64Url } from "../base64.ts";
32
-
33
- // reexport for backwards compatibility
34
- export type { BearerTokenResponse };
35
-
36
- /**
37
- * Authorization parameters which are used in the authentication request of an OIDC auth code flow.
38
- *
39
- * See https://openid.net/specs/openid-connect-basic-1_0.html#RequestParameters.
40
- */
41
- export type AuthorizationParams = {
42
- state: string;
43
- scope: string;
44
- redirectUri: string;
45
- codeVerifier: string;
46
- nonce: string;
47
- };
48
-
49
- /**
50
- * @experimental
51
- * Generate the scope used in authorization request with OIDC OP
52
- * @returns scope
53
- */
54
- export const generateScope = (deviceId?: string): string => {
55
- const safeDeviceId = deviceId ?? secureRandomString(10);
56
- return `openid urn:matrix:org.matrix.msc2967.client:api:* urn:matrix:org.matrix.msc2967.client:device:${safeDeviceId}`;
57
- };
58
-
59
- // https://www.rfc-editor.org/rfc/rfc7636
60
- const generateCodeChallenge = async (codeVerifier: string): Promise<string> => {
61
- if (!globalThis.crypto.subtle) {
62
- // @TODO(kerrya) should this be allowed? configurable?
63
- logger.warn("A secure context is required to generate code challenge. Using plain text code challenge");
64
- return codeVerifier;
65
- }
66
-
67
- const hashBuffer = await sha256(codeVerifier);
68
- return encodeUnpaddedBase64Url(hashBuffer);
69
- };
70
-
71
- /**
72
- * Generate authorization params to pass to {@link generateAuthorizationUrl}.
73
- *
74
- * Used as part of an authorization code OIDC flow: see https://openid.net/specs/openid-connect-basic-1_0.html#CodeFlow.
75
- *
76
- * @param redirectUri - absolute url for OP to redirect to after authorization
77
- * @returns AuthorizationParams
78
- */
79
- export const generateAuthorizationParams = ({ redirectUri }: { redirectUri: string }): AuthorizationParams => ({
80
- scope: generateScope(),
81
- redirectUri,
82
- state: secureRandomString(8),
83
- nonce: secureRandomString(8),
84
- codeVerifier: secureRandomString(64), // https://tools.ietf.org/html/rfc7636#section-4.1 length needs to be 43-128 characters
85
- });
86
-
87
- /**
88
- * @deprecated use generateOidcAuthorizationUrl
89
- * Generate a URL to attempt authorization with the OP
90
- * See https://openid.net/specs/openid-connect-basic-1_0.html#CodeRequest
91
- * @param authorizationUrl - endpoint to attempt authorization with the OP
92
- * @param clientId - id of this client as registered with the OP
93
- * @param authorizationParams - params to be used in the url
94
- * @returns a Promise with the url as a string
95
- */
96
- export const generateAuthorizationUrl = async (
97
- authorizationUrl: string,
98
- clientId: string,
99
- { scope, redirectUri, state, nonce, codeVerifier }: AuthorizationParams,
100
- ): Promise<string> => {
101
- const url = new URL(authorizationUrl);
102
- url.searchParams.append("response_mode", "query");
103
- url.searchParams.append("response_type", "code");
104
- url.searchParams.append("redirect_uri", redirectUri);
105
- url.searchParams.append("client_id", clientId);
106
- url.searchParams.append("state", state);
107
- url.searchParams.append("scope", scope);
108
- url.searchParams.append("nonce", nonce);
109
-
110
- url.searchParams.append("code_challenge_method", "S256");
111
- url.searchParams.append("code_challenge", await generateCodeChallenge(codeVerifier));
112
-
113
- return url.toString();
114
- };
115
-
116
- /**
117
- * @experimental
118
- * Generate a URL to attempt authorization with the OP
119
- * See https://openid.net/specs/openid-connect-basic-1_0.html#CodeRequest
120
- * @param metadata - validated metadata from OP discovery
121
- * @param clientId - this client's id as registered with the OP
122
- * @param homeserverUrl - used to establish the session on return from the OP
123
- * @param identityServerUrl - used to establish the session on return from the OP
124
- * @param nonce - state
125
- * @param prompt - indicates to the OP which flow the user should see - eg login or registration
126
- * See https://openid.net/specs/openid-connect-prompt-create-1_0.html#name-prompt-parameter
127
- * @param urlState - value to append to the opaque state identifier to uniquely identify the callback
128
- * @param loginHint - value to send as the `login_hint` to the OP, giving a hint about the login identifier the user might use to log in.
129
- * See {@link https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest OIDC core 3.1.2.1}.
130
- * @returns a Promise with the url as a string
131
- */
132
- export const generateOidcAuthorizationUrl = async ({
133
- metadata,
134
- redirectUri,
135
- clientId,
136
- homeserverUrl,
137
- identityServerUrl,
138
- nonce,
139
- prompt,
140
- urlState,
141
- loginHint,
142
- }: {
143
- clientId: string;
144
- metadata: ValidatedAuthMetadata;
145
- homeserverUrl: string;
146
- identityServerUrl?: string;
147
- redirectUri: string;
148
- nonce: string;
149
- prompt?: string;
150
- urlState?: string;
151
- loginHint?: string;
152
- }): Promise<string> => {
153
- const scope = generateScope();
154
- const oidcClient = new OidcClient({
155
- ...metadata,
156
- client_id: clientId,
157
- redirect_uri: redirectUri,
158
- authority: metadata.issuer,
159
- response_mode: "query",
160
- response_type: "code",
161
- scope,
162
- stateStore: new WebStorageStateStore({ prefix: "mx_oidc_", store: window.sessionStorage }),
163
- });
164
- const userState: UserState = { homeserverUrl, nonce, identityServerUrl };
165
- const request = await oidcClient.createSigninRequest({
166
- state: userState,
167
- nonce,
168
- prompt,
169
- url_state: urlState,
170
- login_hint: loginHint,
171
- });
172
-
173
- return request.url;
174
- };
175
-
176
- /**
177
- * Normalize token_type to use capital case to make consuming the token response easier
178
- * token_type is case insensitive, and it is spec-compliant for OPs to return token_type: "bearer"
179
- * Later, when used in auth headers it is case sensitive and must be Bearer
180
- * See: https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.4
181
- *
182
- * @param response - validated token response
183
- * @returns response with token_type set to 'Bearer'
184
- */
185
- const normalizeBearerTokenResponseTokenType = (response: SigninResponse): BearerTokenResponse =>
186
- ({
187
- id_token: response.id_token,
188
- scope: response.scope,
189
- expires_at: response.expires_at,
190
- refresh_token: response.refresh_token,
191
- access_token: response.access_token,
192
- token_type: "Bearer",
193
- }) as BearerTokenResponse;
194
-
195
- /**
196
- * @experimental
197
- * Attempt to exchange authorization code for bearer token.
198
- *
199
- * Takes the authorization code returned by the OpenID Provider via the authorization URL, and makes a
200
- * request to the Token Endpoint, to obtain the access token, refresh token, etc.
201
- *
202
- * @param code - authorization code as returned by OP during authorization
203
- * @param storedAuthorizationParams - stored params from start of oidc login flow
204
- * @returns valid bearer token response
205
- * @throws An `Error` with `message` set to an entry in {@link OidcError},
206
- * when the request fails, or the returned token response is invalid.
207
- */
208
- export const completeAuthorizationCodeGrant = async (
209
- code: string,
210
- state: string,
211
- ): Promise<{
212
- oidcClientSettings: { clientId: string; issuer: string };
213
- tokenResponse: BearerTokenResponse;
214
- homeserverUrl: string;
215
- idTokenClaims: IdTokenClaims;
216
- identityServerUrl?: string;
217
- }> => {
218
- /**
219
- * Element Web strips and changes the url on starting the app
220
- * Use the code and state from query params to rebuild a url
221
- * so that oidc-client can parse it
222
- */
223
- const reconstructedUrl = new URL(window.location.origin);
224
- reconstructedUrl.searchParams.append("code", code);
225
- reconstructedUrl.searchParams.append("state", state);
226
-
227
- // set oidc-client to use our logger
228
- Log.setLogger(logger);
229
- try {
230
- const response = new SigninResponse(reconstructedUrl.searchParams);
231
-
232
- const stateStore = new WebStorageStateStore({ prefix: "mx_oidc_", store: window.sessionStorage });
233
-
234
- // retrieve the state we put in storage at the start of oidc auth flow
235
- const stateString = await stateStore.get(response.state!);
236
- if (!stateString) {
237
- throw new Error(OidcError.MissingOrInvalidStoredState);
238
- }
239
-
240
- // hydrate the sign in state and create a client
241
- // the stored sign in state includes oidc configuration we set at the start of the oidc login flow
242
- const signInState = await SigninState.fromStorageString(stateString);
243
- const client = new OidcClient({ ...signInState, stateStore });
244
-
245
- // validate the code and state, and attempt to swap the code for tokens
246
- const signinResponse = await client.processSigninResponse(reconstructedUrl.href);
247
-
248
- // extra values we stored at the start of the login flow
249
- // used to complete login in the client
250
- const userState = signinResponse.userState;
251
- validateStoredUserState(userState);
252
-
253
- // throws when response is invalid
254
- validateBearerTokenResponse(signinResponse);
255
- // throws when token is invalid
256
- validateIdToken(signinResponse.id_token, client.settings.authority, client.settings.client_id, userState.nonce);
257
- const normalizedTokenResponse = normalizeBearerTokenResponseTokenType(signinResponse);
258
-
259
- return {
260
- oidcClientSettings: {
261
- clientId: client.settings.client_id,
262
- issuer: client.settings.authority,
263
- },
264
- tokenResponse: normalizedTokenResponse,
265
- homeserverUrl: userState.homeserverUrl,
266
- identityServerUrl: userState.identityServerUrl,
267
- idTokenClaims: signinResponse.profile,
268
- };
269
- } catch (error) {
270
- logger.error("Oidc login failed", error);
271
- const errorType = (error as Error).message;
272
-
273
- // rethrow errors that we recognise
274
- if (Object.values(OidcError).includes(errorType as any)) {
275
- throw error;
276
- }
277
- throw new Error(OidcError.CodeExchangeFailed);
278
- }
279
- };
1
+ /*
2
+ Copyright 2023 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 { type IdTokenClaims, Log, OidcClient, SigninResponse, SigninState, WebStorageStateStore } from "oidc-client-ts";
18
+
19
+ import { logger } from "../logger.ts";
20
+ import { secureRandomString } from "../randomstring.ts";
21
+ import { OidcError } from "./error.ts";
22
+ import {
23
+ type BearerTokenResponse,
24
+ type UserState,
25
+ validateBearerTokenResponse,
26
+ type ValidatedAuthMetadata,
27
+ validateIdToken,
28
+ validateStoredUserState,
29
+ } from "./validate.ts";
30
+ import { sha256 } from "../digest.ts";
31
+ import { encodeUnpaddedBase64Url } from "../base64.ts";
32
+
33
+ // reexport for backwards compatibility
34
+ export type { BearerTokenResponse };
35
+
36
+ /**
37
+ * Authorization parameters which are used in the authentication request of an OIDC auth code flow.
38
+ *
39
+ * See https://openid.net/specs/openid-connect-basic-1_0.html#RequestParameters.
40
+ */
41
+ export type AuthorizationParams = {
42
+ state: string;
43
+ scope: string;
44
+ redirectUri: string;
45
+ codeVerifier: string;
46
+ nonce: string;
47
+ };
48
+
49
+ /**
50
+ * @experimental
51
+ * Generate the scope used in authorization request with OIDC OP
52
+ * @returns scope
53
+ */
54
+ export const generateScope = (deviceId?: string): string => {
55
+ const safeDeviceId = deviceId ?? secureRandomString(10);
56
+ return `openid urn:matrix:org.matrix.msc2967.client:api:* urn:matrix:org.matrix.msc2967.client:device:${safeDeviceId}`;
57
+ };
58
+
59
+ // https://www.rfc-editor.org/rfc/rfc7636
60
+ const generateCodeChallenge = async (codeVerifier: string): Promise<string> => {
61
+ if (!globalThis.crypto.subtle) {
62
+ // @TODO(kerrya) should this be allowed? configurable?
63
+ logger.warn("A secure context is required to generate code challenge. Using plain text code challenge");
64
+ return codeVerifier;
65
+ }
66
+
67
+ const hashBuffer = await sha256(codeVerifier);
68
+ return encodeUnpaddedBase64Url(hashBuffer);
69
+ };
70
+
71
+ /**
72
+ * Generate authorization params to pass to {@link generateAuthorizationUrl}.
73
+ *
74
+ * Used as part of an authorization code OIDC flow: see https://openid.net/specs/openid-connect-basic-1_0.html#CodeFlow.
75
+ *
76
+ * @param redirectUri - absolute url for OP to redirect to after authorization
77
+ * @returns AuthorizationParams
78
+ */
79
+ export const generateAuthorizationParams = ({ redirectUri }: { redirectUri: string }): AuthorizationParams => ({
80
+ scope: generateScope(),
81
+ redirectUri,
82
+ state: secureRandomString(8),
83
+ nonce: secureRandomString(8),
84
+ codeVerifier: secureRandomString(64), // https://tools.ietf.org/html/rfc7636#section-4.1 length needs to be 43-128 characters
85
+ });
86
+
87
+ /**
88
+ * @deprecated use generateOidcAuthorizationUrl
89
+ * Generate a URL to attempt authorization with the OP
90
+ * See https://openid.net/specs/openid-connect-basic-1_0.html#CodeRequest
91
+ * @param authorizationUrl - endpoint to attempt authorization with the OP
92
+ * @param clientId - id of this client as registered with the OP
93
+ * @param authorizationParams - params to be used in the url
94
+ * @returns a Promise with the url as a string
95
+ */
96
+ export const generateAuthorizationUrl = async (
97
+ authorizationUrl: string,
98
+ clientId: string,
99
+ { scope, redirectUri, state, nonce, codeVerifier }: AuthorizationParams,
100
+ ): Promise<string> => {
101
+ const url = new URL(authorizationUrl);
102
+ url.searchParams.append("response_mode", "query");
103
+ url.searchParams.append("response_type", "code");
104
+ url.searchParams.append("redirect_uri", redirectUri);
105
+ url.searchParams.append("client_id", clientId);
106
+ url.searchParams.append("state", state);
107
+ url.searchParams.append("scope", scope);
108
+ url.searchParams.append("nonce", nonce);
109
+
110
+ url.searchParams.append("code_challenge_method", "S256");
111
+ url.searchParams.append("code_challenge", await generateCodeChallenge(codeVerifier));
112
+
113
+ return url.toString();
114
+ };
115
+
116
+ /**
117
+ * @experimental
118
+ * Generate a URL to attempt authorization with the OP
119
+ * See https://openid.net/specs/openid-connect-basic-1_0.html#CodeRequest
120
+ * @param metadata - validated metadata from OP discovery
121
+ * @param clientId - this client's id as registered with the OP
122
+ * @param homeserverUrl - used to establish the session on return from the OP
123
+ * @param identityServerUrl - used to establish the session on return from the OP
124
+ * @param nonce - state
125
+ * @param prompt - indicates to the OP which flow the user should see - eg login or registration
126
+ * See https://openid.net/specs/openid-connect-prompt-create-1_0.html#name-prompt-parameter
127
+ * @param urlState - value to append to the opaque state identifier to uniquely identify the callback
128
+ * @param loginHint - value to send as the `login_hint` to the OP, giving a hint about the login identifier the user might use to log in.
129
+ * See {@link https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest OIDC core 3.1.2.1}.
130
+ * @returns a Promise with the url as a string
131
+ */
132
+ export const generateOidcAuthorizationUrl = async ({
133
+ metadata,
134
+ redirectUri,
135
+ clientId,
136
+ homeserverUrl,
137
+ identityServerUrl,
138
+ nonce,
139
+ prompt,
140
+ urlState,
141
+ loginHint,
142
+ }: {
143
+ clientId: string;
144
+ metadata: ValidatedAuthMetadata;
145
+ homeserverUrl: string;
146
+ identityServerUrl?: string;
147
+ redirectUri: string;
148
+ nonce: string;
149
+ prompt?: string;
150
+ urlState?: string;
151
+ loginHint?: string;
152
+ }): Promise<string> => {
153
+ const scope = generateScope();
154
+ const oidcClient = new OidcClient({
155
+ ...metadata,
156
+ client_id: clientId,
157
+ redirect_uri: redirectUri,
158
+ authority: metadata.issuer,
159
+ response_mode: "query",
160
+ response_type: "code",
161
+ scope,
162
+ stateStore: new WebStorageStateStore({ prefix: "mx_oidc_", store: window.sessionStorage }),
163
+ });
164
+ const userState: UserState = { homeserverUrl, nonce, identityServerUrl };
165
+ const request = await oidcClient.createSigninRequest({
166
+ state: userState,
167
+ nonce,
168
+ prompt,
169
+ url_state: urlState,
170
+ login_hint: loginHint,
171
+ });
172
+
173
+ return request.url;
174
+ };
175
+
176
+ /**
177
+ * Normalize token_type to use capital case to make consuming the token response easier
178
+ * token_type is case insensitive, and it is spec-compliant for OPs to return token_type: "bearer"
179
+ * Later, when used in auth headers it is case sensitive and must be Bearer
180
+ * See: https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.4
181
+ *
182
+ * @param response - validated token response
183
+ * @returns response with token_type set to 'Bearer'
184
+ */
185
+ const normalizeBearerTokenResponseTokenType = (response: SigninResponse): BearerTokenResponse =>
186
+ ({
187
+ id_token: response.id_token,
188
+ scope: response.scope,
189
+ expires_at: response.expires_at,
190
+ refresh_token: response.refresh_token,
191
+ access_token: response.access_token,
192
+ token_type: "Bearer",
193
+ }) as BearerTokenResponse;
194
+
195
+ /**
196
+ * @experimental
197
+ * Attempt to exchange authorization code for bearer token.
198
+ *
199
+ * Takes the authorization code returned by the OpenID Provider via the authorization URL, and makes a
200
+ * request to the Token Endpoint, to obtain the access token, refresh token, etc.
201
+ *
202
+ * @param code - authorization code as returned by OP during authorization
203
+ * @param storedAuthorizationParams - stored params from start of oidc login flow
204
+ * @returns valid bearer token response
205
+ * @throws An `Error` with `message` set to an entry in {@link OidcError},
206
+ * when the request fails, or the returned token response is invalid.
207
+ */
208
+ export const completeAuthorizationCodeGrant = async (
209
+ code: string,
210
+ state: string,
211
+ ): Promise<{
212
+ oidcClientSettings: { clientId: string; issuer: string };
213
+ tokenResponse: BearerTokenResponse;
214
+ homeserverUrl: string;
215
+ idTokenClaims: IdTokenClaims;
216
+ identityServerUrl?: string;
217
+ }> => {
218
+ /**
219
+ * Element Web strips and changes the url on starting the app
220
+ * Use the code and state from query params to rebuild a url
221
+ * so that oidc-client can parse it
222
+ */
223
+ const reconstructedUrl = new URL(window.location.origin);
224
+ reconstructedUrl.searchParams.append("code", code);
225
+ reconstructedUrl.searchParams.append("state", state);
226
+
227
+ // set oidc-client to use our logger
228
+ Log.setLogger(logger);
229
+ try {
230
+ const response = new SigninResponse(reconstructedUrl.searchParams);
231
+
232
+ const stateStore = new WebStorageStateStore({ prefix: "mx_oidc_", store: window.sessionStorage });
233
+
234
+ // retrieve the state we put in storage at the start of oidc auth flow
235
+ const stateString = await stateStore.get(response.state!);
236
+ if (!stateString) {
237
+ throw new Error(OidcError.MissingOrInvalidStoredState);
238
+ }
239
+
240
+ // hydrate the sign in state and create a client
241
+ // the stored sign in state includes oidc configuration we set at the start of the oidc login flow
242
+ const signInState = await SigninState.fromStorageString(stateString);
243
+ const client = new OidcClient({ ...signInState, stateStore });
244
+
245
+ // validate the code and state, and attempt to swap the code for tokens
246
+ const signinResponse = await client.processSigninResponse(reconstructedUrl.href);
247
+
248
+ // extra values we stored at the start of the login flow
249
+ // used to complete login in the client
250
+ const userState = signinResponse.userState;
251
+ validateStoredUserState(userState);
252
+
253
+ // throws when response is invalid
254
+ validateBearerTokenResponse(signinResponse);
255
+ // throws when token is invalid
256
+ validateIdToken(signinResponse.id_token, client.settings.authority, client.settings.client_id, userState.nonce);
257
+ const normalizedTokenResponse = normalizeBearerTokenResponseTokenType(signinResponse);
258
+
259
+ return {
260
+ oidcClientSettings: {
261
+ clientId: client.settings.client_id,
262
+ issuer: client.settings.authority,
263
+ },
264
+ tokenResponse: normalizedTokenResponse,
265
+ homeserverUrl: userState.homeserverUrl,
266
+ identityServerUrl: userState.identityServerUrl,
267
+ idTokenClaims: signinResponse.profile,
268
+ };
269
+ } catch (error) {
270
+ logger.error("Oidc login failed", error);
271
+ const errorType = (error as Error).message;
272
+
273
+ // rethrow errors that we recognise
274
+ if (Object.values(OidcError).includes(errorType as any)) {
275
+ throw error;
276
+ }
277
+ throw new Error(OidcError.CodeExchangeFailed);
278
+ }
279
+ };
package/src/oidc/error.ts CHANGED
@@ -1,33 +1,33 @@
1
- /*
2
- Copyright 2023 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
- * Errors expected to be encountered during OIDC discovery, client registration, and authentication.
19
- * Not intended to be displayed directly to the user.
20
- */
21
- export enum OidcError {
22
- NotSupported = "OIDC authentication not supported",
23
- Misconfigured = "OIDC is misconfigured",
24
- General = "Something went wrong with OIDC discovery",
25
- OpSupport = "Configured OIDC OP does not support required functions",
26
- DynamicRegistrationNotSupported = "Dynamic registration not supported",
27
- DynamicRegistrationFailed = "Dynamic registration failed",
28
- DynamicRegistrationInvalid = "Dynamic registration invalid response",
29
- CodeExchangeFailed = "Failed to exchange code for token",
30
- InvalidBearerTokenResponse = "Invalid bearer token response",
31
- InvalidIdToken = "Invalid ID token",
32
- MissingOrInvalidStoredState = "State required to finish logging in is not found in storage.",
33
- }
1
+ /*
2
+ Copyright 2023 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
+ * Errors expected to be encountered during OIDC discovery, client registration, and authentication.
19
+ * Not intended to be displayed directly to the user.
20
+ */
21
+ export enum OidcError {
22
+ NotSupported = "OIDC authentication not supported",
23
+ Misconfigured = "OIDC is misconfigured",
24
+ General = "Something went wrong with OIDC discovery",
25
+ OpSupport = "Configured OIDC OP does not support required functions",
26
+ DynamicRegistrationNotSupported = "Dynamic registration not supported",
27
+ DynamicRegistrationFailed = "Dynamic registration failed",
28
+ DynamicRegistrationInvalid = "Dynamic registration invalid response",
29
+ CodeExchangeFailed = "Failed to exchange code for token",
30
+ InvalidBearerTokenResponse = "Invalid bearer token response",
31
+ InvalidIdToken = "Invalid ID token",
32
+ MissingOrInvalidStoredState = "State required to finish logging in is not found in storage.",
33
+ }