matrix-js-sdk 41.4.0 → 41.5.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.
- package/CHANGELOG.md +12 -0
- package/README.md +1 -0
- package/lib/@types/json.d.ts +7 -0
- package/lib/@types/json.d.ts.map +1 -0
- package/lib/@types/json.js +1 -0
- package/lib/@types/json.js.map +1 -0
- package/lib/@types/requests.d.ts +6 -9
- package/lib/@types/requests.d.ts.map +1 -1
- package/lib/@types/requests.js.map +1 -1
- package/lib/client.d.ts +17 -2
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +27 -12
- package/lib/client.js.map +1 -1
- package/lib/filter.d.ts +20 -5
- package/lib/filter.d.ts.map +1 -1
- package/lib/filter.js +21 -0
- package/lib/filter.js.map +1 -1
- package/lib/models/user.d.ts +5 -0
- package/lib/models/user.d.ts.map +1 -1
- package/lib/models/user.js +5 -0
- package/lib/models/user.js.map +1 -1
- package/lib/oidc/authorize.d.ts +60 -0
- package/lib/oidc/authorize.d.ts.map +1 -1
- package/lib/oidc/authorize.js +115 -2
- package/lib/oidc/authorize.js.map +1 -1
- package/lib/oidc/register.d.ts.map +1 -1
- package/lib/oidc/register.js +5 -0
- package/lib/oidc/register.js.map +1 -1
- package/lib/rendezvous/MSC4108SignInWithQR.d.ts +19 -2
- package/lib/rendezvous/MSC4108SignInWithQR.d.ts.map +1 -1
- package/lib/rendezvous/MSC4108SignInWithQR.js +126 -36
- package/lib/rendezvous/MSC4108SignInWithQR.js.map +1 -1
- package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts.map +1 -1
- package/lib/rendezvous/channels/MSC4108SecureChannel.js +4 -2
- package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +1 -1
- package/lib/rendezvous/index.d.ts +36 -0
- package/lib/rendezvous/index.d.ts.map +1 -1
- package/lib/rendezvous/index.js +115 -0
- package/lib/rendezvous/index.js.map +1 -1
- package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +1 -1
- package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts.map +1 -1
- package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +1 -1
- package/lib/rust-crypto/rust-crypto.d.ts.map +1 -1
- package/lib/rust-crypto/rust-crypto.js +2 -2
- package/lib/rust-crypto/rust-crypto.js.map +1 -1
- package/lib/store/index.d.ts +17 -1
- package/lib/store/index.d.ts.map +1 -1
- package/lib/store/index.js.map +1 -1
- package/lib/store/indexeddb-backend.d.ts +4 -0
- package/lib/store/indexeddb-backend.d.ts.map +1 -1
- package/lib/store/indexeddb-backend.js.map +1 -1
- package/lib/store/indexeddb-local-backend.d.ts +4 -1
- package/lib/store/indexeddb-local-backend.d.ts.map +1 -1
- package/lib/store/indexeddb-local-backend.js +45 -3
- package/lib/store/indexeddb-local-backend.js.map +1 -1
- package/lib/store/indexeddb-remote-backend.d.ts +4 -0
- package/lib/store/indexeddb-remote-backend.d.ts.map +1 -1
- package/lib/store/indexeddb-remote-backend.js +21 -3
- package/lib/store/indexeddb-remote-backend.js.map +1 -1
- package/lib/store/indexeddb-store-worker.d.ts.map +1 -1
- package/lib/store/indexeddb-store-worker.js +10 -1
- package/lib/store/indexeddb-store-worker.js.map +1 -1
- package/lib/store/indexeddb.d.ts +4 -0
- package/lib/store/indexeddb.d.ts.map +1 -1
- package/lib/store/indexeddb.js +18 -0
- package/lib/store/indexeddb.js.map +1 -1
- package/lib/store/memory.d.ts +5 -1
- package/lib/store/memory.d.ts.map +1 -1
- package/lib/store/memory.js +19 -0
- package/lib/store/memory.js.map +1 -1
- package/lib/store/stub.d.ts +3 -0
- package/lib/store/stub.d.ts.map +1 -1
- package/lib/store/stub.js +15 -0
- package/lib/store/stub.js.map +1 -1
- package/lib/sync-accumulator.d.ts +15 -0
- package/lib/sync-accumulator.d.ts.map +1 -1
- package/lib/sync-accumulator.js +4 -0
- package/lib/sync-accumulator.js.map +1 -1
- package/lib/sync.d.ts +9 -1
- package/lib/sync.d.ts.map +1 -1
- package/lib/sync.js +51 -9
- package/lib/sync.js.map +1 -1
- package/lib/webrtc/call.d.ts.map +1 -1
- package/lib/webrtc/call.js +1 -2
- package/lib/webrtc/call.js.map +1 -1
- package/package.json +7 -7
- package/src/@types/json.ts +16 -0
- package/src/@types/requests.ts +6 -9
- package/src/client.ts +40 -12
- package/src/filter.ts +31 -5
- package/src/models/user.ts +6 -0
- package/src/oidc/authorize.ts +135 -2
- package/src/oidc/register.ts +5 -0
- package/src/rendezvous/MSC4108SignInWithQR.ts +117 -4
- package/src/rendezvous/channels/MSC4108SecureChannel.ts +10 -2
- package/src/rendezvous/index.ts +115 -0
- package/src/rendezvous/transports/MSC4108RendezvousSession.ts +1 -1
- package/src/rust-crypto/rust-crypto.ts +6 -3
- package/src/store/index.ts +20 -1
- package/src/store/indexeddb-backend.ts +4 -0
- package/src/store/indexeddb-local-backend.ts +32 -1
- package/src/store/indexeddb-remote-backend.ts +13 -0
- package/src/store/indexeddb-store-worker.ts +9 -0
- package/src/store/indexeddb.ts +13 -0
- package/src/store/memory.ts +14 -1
- package/src/store/stub.ts +12 -0
- package/src/sync-accumulator.ts +16 -1
- package/src/sync.ts +48 -4
- package/src/webrtc/call.ts +1 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MSC4108SecureChannel.js","names":["Ecies","QrCodeData","QrCodeIntent","ClientRendezvousFailureReason","MSC4108FailureReason","RendezvousError","logger","MSC4108SecureChannel","constructor","rendezvousSession","theirPublicKey","onFailure","_defineProperty","secureChannel","generateCode","mode","serverName","_this","_asyncToGenerator","url","Error","public_key","Reciprocate","undefined","toBytes","getCheckCode","_this$establishedChan","x","establishedChannel","check_code","Array","from","as_bytes","map","b","concat","join","connect","_this2","connected","result","establish_outbound_channel","channel","info","send","initial_message","ciphertext","receive","UnexpectedMessageReceived","candidateLoginOkMessage","decrypt","InsecureChannelDetected","loginInitiateMessage","message","candidateLoginInitiateMessage","establish_inbound_channel","loginOkMessage","encrypt","_this3","plaintext","_this4","secureSend","payload","_this5","stringifiedPayload","JSON","stringify","debug","type","secureReceive","_this6","json","parse","close","_this7","cancel","reason","_this8","_this8$onFailure","call","cancelled"],"sources":["../../../src/rendezvous/channels/MSC4108SecureChannel.ts"],"sourcesContent":["/*\nCopyright 2024 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {\n type Curve25519PublicKey,\n Ecies,\n type EstablishedEcies,\n QrCodeData,\n QrCodeIntent,\n} from \"@matrix-org/matrix-sdk-crypto-wasm\";\n\nimport {\n ClientRendezvousFailureReason,\n MSC4108FailureReason,\n type MSC4108Payload,\n RendezvousError,\n type RendezvousFailureListener,\n} from \"../index.ts\";\nimport { type MSC4108RendezvousSession } from \"../transports/MSC4108RendezvousSession.ts\";\nimport { logger } from \"../../logger.ts\";\n\n/**\n * Prototype of the unstable [MSC4108](https://github.com/matrix-org/matrix-spec-proposals/pull/4108)\n * secure rendezvous session protocol.\n * @experimental Note that this is UNSTABLE and may have breaking changes without notice.\n * Imports @matrix-org/matrix-sdk-crypto-wasm so should be async-imported to avoid bundling the WASM into the main bundle.\n */\nexport class MSC4108SecureChannel {\n private readonly secureChannel: Ecies;\n private establishedChannel?: EstablishedEcies;\n private connected = false;\n\n public constructor(\n private rendezvousSession: MSC4108RendezvousSession,\n private theirPublicKey?: Curve25519PublicKey,\n public onFailure?: RendezvousFailureListener,\n ) {\n this.secureChannel = new Ecies();\n }\n\n /**\n * Generate a QR code for the current session.\n * @param mode the mode to generate the QR code in, either `Login` or `Reciprocate`.\n * @param serverName the name of the homeserver to connect to, as defined by server discovery in the spec, required for `Reciprocate` mode.\n */\n public async generateCode(mode: QrCodeIntent.Login): Promise<Uint8Array>;\n public async generateCode(mode: QrCodeIntent.Reciprocate, serverName: string): Promise<Uint8Array>;\n public async generateCode(mode: QrCodeIntent, serverName?: string): Promise<Uint8Array> {\n const { url } = this.rendezvousSession;\n\n if (!url) {\n throw new Error(\"No rendezvous session URL\");\n }\n\n return new QrCodeData(\n this.secureChannel.public_key(),\n url,\n mode === QrCodeIntent.Reciprocate ? serverName : undefined,\n ).toBytes();\n }\n\n /**\n * Returns the check code for the secure channel or undefined if not generated yet.\n */\n public getCheckCode(): string | undefined {\n const x = this.establishedChannel?.check_code();\n\n if (!x) {\n return undefined;\n }\n return Array.from(x.as_bytes())\n .map((b) => `${b % 10}`)\n .join(\"\");\n }\n\n /**\n * Connects and establishes a secure channel with the other device.\n */\n public async connect(): Promise<void> {\n if (this.connected) {\n throw new Error(\"Channel already connected\");\n }\n\n if (this.theirPublicKey) {\n // We are the scanning device\n const result = this.secureChannel.establish_outbound_channel(\n this.theirPublicKey,\n \"MATRIX_QR_CODE_LOGIN_INITIATE\",\n );\n this.establishedChannel = result.channel;\n\n /*\n Secure Channel step 4. Device S sends the initial message\n\n Nonce := 0\n SH := ECDH(Ss, Gp)\n EncKey := HKDF_SHA256(SH, \"MATRIX_QR_CODE_LOGIN|\" || Gp || \"|\" || Sp, 0, 32)\n TaggedCiphertext := ChaCha20Poly1305_Encrypt(EncKey, Nonce, \"MATRIX_QR_CODE_LOGIN_INITIATE\")\n Nonce := Nonce + 2\n LoginInitiateMessage := UnpaddedBase64(TaggedCiphertext) || \"|\" || UnpaddedBase64(Sp)\n */\n {\n logger.info(\"Sending LoginInitiateMessage\");\n await this.rendezvousSession.send(result.initial_message);\n }\n\n /*\n Secure Channel step 6. Verification by Device S\n\n Nonce_G := 1\n (TaggedCiphertext, Sp) := Unpack(Message)\n Plaintext := ChaCha20Poly1305_Decrypt(EncKey, Nonce_G, TaggedCiphertext)\n Nonce_G := Nonce_G + 2\n\n unless Plaintext == \"MATRIX_QR_CODE_LOGIN_OK\":\n FAIL\n */\n {\n logger.info(\"Waiting for LoginOkMessage\");\n const ciphertext = await this.rendezvousSession.receive();\n\n if (!ciphertext) {\n throw new RendezvousError(\n \"No response from other device\",\n MSC4108FailureReason.UnexpectedMessageReceived,\n );\n }\n const candidateLoginOkMessage = await this.decrypt(ciphertext);\n\n if (candidateLoginOkMessage !== \"MATRIX_QR_CODE_LOGIN_OK\") {\n throw new RendezvousError(\n \"Invalid response from other device\",\n ClientRendezvousFailureReason.InsecureChannelDetected,\n );\n }\n\n // Step 6 is now complete. We trust the channel\n }\n } else {\n /*\n Secure Channel step 5. Device G confirms\n\n Nonce_S := 0\n (TaggedCiphertext, Sp) := Unpack(LoginInitiateMessage)\n SH := ECDH(Gs, Sp)\n EncKey := HKDF_SHA256(SH, \"MATRIX_QR_CODE_LOGIN|\" || Gp || \"|\" || Sp, 0, 32)\n Plaintext := ChaCha20Poly1305_Decrypt(EncKey, Nonce_S, TaggedCiphertext)\n Nonce_S := Nonce_S + 2\n */\n // wait for the other side to send us their public key\n logger.info(\"Waiting for LoginInitiateMessage\");\n const loginInitiateMessage = await this.rendezvousSession.receive();\n if (!loginInitiateMessage) {\n throw new Error(\"No response from other device\");\n }\n\n const { channel, message: candidateLoginInitiateMessage } =\n this.secureChannel.establish_inbound_channel(loginInitiateMessage);\n this.establishedChannel = channel;\n\n if (candidateLoginInitiateMessage !== \"MATRIX_QR_CODE_LOGIN_INITIATE\") {\n throw new RendezvousError(\n \"Invalid response from other device\",\n ClientRendezvousFailureReason.InsecureChannelDetected,\n );\n }\n logger.info(\"LoginInitiateMessage received\");\n\n logger.info(\"Sending LoginOkMessage\");\n const loginOkMessage = await this.encrypt(\"MATRIX_QR_CODE_LOGIN_OK\");\n await this.rendezvousSession.send(loginOkMessage);\n\n // Step 5 is complete. We don't yet trust the channel\n\n // next step will be for the user to confirm the check code on the other device\n }\n\n this.connected = true;\n }\n\n private async decrypt(ciphertext: string): Promise<string> {\n if (!this.establishedChannel) {\n throw new Error(\"Channel closed\");\n }\n\n return this.establishedChannel.decrypt(ciphertext);\n }\n\n private async encrypt(plaintext: string): Promise<string> {\n if (!this.establishedChannel) {\n throw new Error(\"Channel closed\");\n }\n\n return this.establishedChannel.encrypt(plaintext);\n }\n\n /**\n * Sends a payload securely to the other device.\n * @param payload the payload to encrypt and send\n */\n public async secureSend<T extends MSC4108Payload>(payload: T): Promise<void> {\n if (!this.connected) {\n throw new Error(\"Channel closed\");\n }\n\n const stringifiedPayload = JSON.stringify(payload);\n logger.debug(`=> {\"type\": ${JSON.stringify(payload.type)}, ...}`);\n\n await this.rendezvousSession.send(await this.encrypt(stringifiedPayload));\n }\n\n /**\n * Receives an encrypted payload from the other device and decrypts it.\n */\n public async secureReceive<T extends MSC4108Payload>(): Promise<Partial<T> | undefined> {\n if (!this.establishedChannel) {\n throw new Error(\"Channel closed\");\n }\n\n const ciphertext = await this.rendezvousSession.receive();\n if (!ciphertext) {\n return undefined;\n }\n const plaintext = await this.decrypt(ciphertext);\n const json = JSON.parse(plaintext);\n\n logger.debug(`<= {\"type\": ${JSON.stringify(json.type)}, ...}`);\n return json as Partial<T> | undefined;\n }\n\n /**\n * Closes the secure channel.\n */\n public async close(): Promise<void> {\n await this.rendezvousSession.close();\n }\n\n /**\n * Cancels the secure channel.\n * @param reason the reason for the cancellation\n */\n public async cancel(reason: MSC4108FailureReason | ClientRendezvousFailureReason): Promise<void> {\n try {\n await this.rendezvousSession.cancel(reason);\n this.onFailure?.(reason);\n } finally {\n await this.close();\n }\n }\n\n /**\n * Returns whether the rendezvous session has been cancelled.\n */\n public get cancelled(): boolean {\n return this.rendezvousSession.cancelled;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"MSC4108SecureChannel.js","names":["Ecies","QrCodeData","QrCodeIntent","ClientRendezvousFailureReason","MSC4108FailureReason","RendezvousError","logger","MSC4108SecureChannel","constructor","rendezvousSession","theirPublicKey","onFailure","_defineProperty","secureChannel","generateCode","mode","serverName","_this","_asyncToGenerator","url","Error","public_key","Reciprocate","undefined","toBytes","getCheckCode","_this$establishedChan","x","establishedChannel","check_code","Array","from","as_bytes","map","b","concat","join","connect","_this2","connected","result","establish_outbound_channel","channel","info","send","initial_message","ciphertext","receive","UnexpectedMessageReceived","candidateLoginOkMessage","decrypt","InsecureChannelDetected","loginInitiateMessage","message","candidateLoginInitiateMessage","establish_inbound_channel","loginOkMessage","encrypt","_this3","plaintext","_this4","secureSend","payload","_this5","stringifiedPayload","JSON","stringify","debug","type","secureReceive","_this6","json","parse","close","_this7","cancel","reason","_this8","_this8$onFailure","call","UserDeclined","UserCancelled","cancelled"],"sources":["../../../src/rendezvous/channels/MSC4108SecureChannel.ts"],"sourcesContent":["/*\nCopyright 2024 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {\n type Curve25519PublicKey,\n Ecies,\n type EstablishedEcies,\n QrCodeData,\n QrCodeIntent,\n} from \"@matrix-org/matrix-sdk-crypto-wasm\";\n\nimport {\n ClientRendezvousFailureReason,\n MSC4108FailureReason,\n type MSC4108Payload,\n RendezvousError,\n type RendezvousFailureListener,\n} from \"../index.ts\";\nimport { type MSC4108RendezvousSession } from \"../transports/MSC4108RendezvousSession.ts\";\nimport { logger } from \"../../logger.ts\";\n\n/**\n * Prototype of the unstable [MSC4108](https://github.com/matrix-org/matrix-spec-proposals/pull/4108)\n * secure rendezvous session protocol.\n * @experimental Note that this is UNSTABLE and may have breaking changes without notice.\n * Imports @matrix-org/matrix-sdk-crypto-wasm so should be async-imported to avoid bundling the WASM into the main bundle.\n */\nexport class MSC4108SecureChannel {\n private readonly secureChannel: Ecies;\n private establishedChannel?: EstablishedEcies;\n private connected = false;\n\n public constructor(\n private rendezvousSession: MSC4108RendezvousSession,\n private theirPublicKey?: Curve25519PublicKey,\n public onFailure?: RendezvousFailureListener,\n ) {\n this.secureChannel = new Ecies();\n }\n\n /**\n * Generate a QR code for the current session.\n * @param mode the mode to generate the QR code in, either `Login` or `Reciprocate`.\n * @param serverName the name of the homeserver to connect to, as defined by server discovery in the spec, required for `Reciprocate` mode.\n */\n public async generateCode(mode: QrCodeIntent.Login): Promise<Uint8Array>;\n public async generateCode(mode: QrCodeIntent.Reciprocate, serverName: string): Promise<Uint8Array>;\n public async generateCode(mode: QrCodeIntent, serverName?: string): Promise<Uint8Array> {\n const { url } = this.rendezvousSession;\n\n if (!url) {\n throw new Error(\"No rendezvous session URL\");\n }\n\n return new QrCodeData(\n this.secureChannel.public_key(),\n url,\n mode === QrCodeIntent.Reciprocate ? serverName : undefined,\n ).toBytes();\n }\n\n /**\n * Returns the check code for the secure channel or undefined if not generated yet.\n */\n public getCheckCode(): string | undefined {\n const x = this.establishedChannel?.check_code();\n\n if (!x) {\n return undefined;\n }\n return Array.from(x.as_bytes())\n .map((b) => `${b % 10}`)\n .join(\"\");\n }\n\n /**\n * Connects and establishes a secure channel with the other device.\n */\n public async connect(): Promise<void> {\n if (this.connected) {\n throw new Error(\"Channel already connected\");\n }\n\n if (this.theirPublicKey) {\n // We are the scanning device\n const result = this.secureChannel.establish_outbound_channel(\n this.theirPublicKey,\n \"MATRIX_QR_CODE_LOGIN_INITIATE\",\n );\n this.establishedChannel = result.channel;\n\n /*\n Secure Channel step 4. Device S sends the initial message\n\n Nonce := 0\n SH := ECDH(Ss, Gp)\n EncKey := HKDF_SHA256(SH, \"MATRIX_QR_CODE_LOGIN|\" || Gp || \"|\" || Sp, 0, 32)\n TaggedCiphertext := ChaCha20Poly1305_Encrypt(EncKey, Nonce, \"MATRIX_QR_CODE_LOGIN_INITIATE\")\n Nonce := Nonce + 2\n LoginInitiateMessage := UnpaddedBase64(TaggedCiphertext) || \"|\" || UnpaddedBase64(Sp)\n */\n {\n logger.info(\"Sending LoginInitiateMessage\");\n await this.rendezvousSession.send(result.initial_message);\n }\n\n /*\n Secure Channel step 6. Verification by Device S\n\n Nonce_G := 1\n (TaggedCiphertext, Sp) := Unpack(Message)\n Plaintext := ChaCha20Poly1305_Decrypt(EncKey, Nonce_G, TaggedCiphertext)\n Nonce_G := Nonce_G + 2\n\n unless Plaintext == \"MATRIX_QR_CODE_LOGIN_OK\":\n FAIL\n */\n {\n logger.info(\"Waiting for LoginOkMessage\");\n const ciphertext = await this.rendezvousSession.receive();\n\n if (!ciphertext) {\n throw new RendezvousError(\n \"No response from other device\",\n MSC4108FailureReason.UnexpectedMessageReceived,\n );\n }\n const candidateLoginOkMessage = await this.decrypt(ciphertext);\n\n if (candidateLoginOkMessage !== \"MATRIX_QR_CODE_LOGIN_OK\") {\n throw new RendezvousError(\n \"Invalid response from other device\",\n ClientRendezvousFailureReason.InsecureChannelDetected,\n );\n }\n\n // Step 6 is now complete. We trust the channel\n }\n } else {\n /*\n Secure Channel step 5. Device G confirms\n\n Nonce_S := 0\n (TaggedCiphertext, Sp) := Unpack(LoginInitiateMessage)\n SH := ECDH(Gs, Sp)\n EncKey := HKDF_SHA256(SH, \"MATRIX_QR_CODE_LOGIN|\" || Gp || \"|\" || Sp, 0, 32)\n Plaintext := ChaCha20Poly1305_Decrypt(EncKey, Nonce_S, TaggedCiphertext)\n Nonce_S := Nonce_S + 2\n */\n // wait for the other side to send us their public key\n logger.info(\"Waiting for LoginInitiateMessage\");\n const loginInitiateMessage = await this.rendezvousSession.receive();\n if (!loginInitiateMessage) {\n throw new RendezvousError(\n \"No response from other device\",\n MSC4108FailureReason.UnexpectedMessageReceived,\n );\n }\n\n const { channel, message: candidateLoginInitiateMessage } =\n this.secureChannel.establish_inbound_channel(loginInitiateMessage);\n this.establishedChannel = channel;\n\n if (candidateLoginInitiateMessage !== \"MATRIX_QR_CODE_LOGIN_INITIATE\") {\n throw new RendezvousError(\n \"Invalid response from other device\",\n ClientRendezvousFailureReason.InsecureChannelDetected,\n );\n }\n logger.info(\"LoginInitiateMessage received\");\n\n logger.info(\"Sending LoginOkMessage\");\n const loginOkMessage = await this.encrypt(\"MATRIX_QR_CODE_LOGIN_OK\");\n await this.rendezvousSession.send(loginOkMessage);\n\n // Step 5 is complete. We don't yet trust the channel\n\n // next step will be for the user to confirm the check code on the other device\n }\n\n this.connected = true;\n }\n\n private async decrypt(ciphertext: string): Promise<string> {\n if (!this.establishedChannel) {\n throw new Error(\"Channel closed\");\n }\n\n return this.establishedChannel.decrypt(ciphertext);\n }\n\n private async encrypt(plaintext: string): Promise<string> {\n if (!this.establishedChannel) {\n throw new Error(\"Channel closed\");\n }\n\n return this.establishedChannel.encrypt(plaintext);\n }\n\n /**\n * Sends a payload securely to the other device.\n * @param payload the payload to encrypt and send\n */\n public async secureSend<T extends MSC4108Payload>(payload: T): Promise<void> {\n if (!this.connected) {\n throw new Error(\"Channel closed\");\n }\n\n const stringifiedPayload = JSON.stringify(payload);\n logger.debug(`=> {\"type\": ${JSON.stringify(payload.type)}, ...}`);\n\n await this.rendezvousSession.send(await this.encrypt(stringifiedPayload));\n }\n\n /**\n * Receives an encrypted payload from the other device and decrypts it.\n */\n public async secureReceive<T extends MSC4108Payload>(): Promise<Partial<T> | undefined> {\n if (!this.establishedChannel) {\n throw new Error(\"Channel closed\");\n }\n\n const ciphertext = await this.rendezvousSession.receive();\n if (!ciphertext) {\n return undefined;\n }\n const plaintext = await this.decrypt(ciphertext);\n const json = JSON.parse(plaintext);\n\n logger.debug(`<= {\"type\": ${JSON.stringify(json.type)}, ...}`);\n return json as Partial<T> | undefined;\n }\n\n /**\n * Closes the secure channel.\n */\n public async close(): Promise<void> {\n await this.rendezvousSession.close();\n }\n\n /**\n * Cancels the secure channel.\n * @param reason the reason for the cancellation\n */\n public async cancel(reason: MSC4108FailureReason | ClientRendezvousFailureReason): Promise<void> {\n try {\n await this.rendezvousSession.cancel(reason);\n this.onFailure?.(reason);\n } finally {\n if (\n reason !== ClientRendezvousFailureReason.UserDeclined &&\n reason !== MSC4108FailureReason.UserCancelled\n ) {\n await this.close();\n }\n }\n }\n\n /**\n * Returns whether the rendezvous session has been cancelled.\n */\n public get cancelled(): boolean {\n return this.rendezvousSession.cancelled;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { type MatrixClient } from "../matrix.ts";
|
|
2
|
+
import { type RendezvousFailureListener } from "./RendezvousFailureReason.ts";
|
|
3
|
+
import { MSC4108SignInWithQR } from "./MSC4108SignInWithQR.ts";
|
|
1
4
|
export * from "./MSC4108SignInWithQR.ts";
|
|
2
5
|
export type * from "./RendezvousChannel.ts";
|
|
3
6
|
export type * from "./RendezvousCode.ts";
|
|
@@ -7,4 +10,37 @@ export * from "./RendezvousIntent.ts";
|
|
|
7
10
|
export type * from "./RendezvousTransport.ts";
|
|
8
11
|
export * from "./transports/index.ts";
|
|
9
12
|
export * from "./channels/index.ts";
|
|
13
|
+
/**
|
|
14
|
+
* Check if the homeserver that the client is connected to supports a variant of sign-in with QR that we can use.
|
|
15
|
+
*
|
|
16
|
+
* @param client the client to check for sign-in with QR support
|
|
17
|
+
* @returns true if the homeserver that the client is connected to supports a variant of sign-in with QR that we can use, false otherwise.
|
|
18
|
+
*/
|
|
19
|
+
export declare function isSignInWithQRAvailable(client: MatrixClient): Promise<boolean>;
|
|
20
|
+
/**
|
|
21
|
+
* Start a linking flow from an existing authenticated client by generating a QR code that can be scanned by the new device.
|
|
22
|
+
* The new device will then authenticate with the server and link itself to the same account as the existing client and
|
|
23
|
+
* share the end-to-end encryption keys.
|
|
24
|
+
*
|
|
25
|
+
* @param client the existing client
|
|
26
|
+
* @param onFailure callback for when the linking process fails
|
|
27
|
+
* @param abortSignal an AbortSignal that can be used to cancel the linking process,
|
|
28
|
+
* for example when the user cancels out of the flow.
|
|
29
|
+
* This will unbind the {@link onFailure} callback and prevent any further steps in the flow from being executed.
|
|
30
|
+
* @returns a promise that resolves to an instance of the linking flow
|
|
31
|
+
*/
|
|
32
|
+
export declare function linkNewDeviceByGeneratingQR(client: MatrixClient, onFailure: RendezvousFailureListener, abortSignal: AbortSignal): Promise<MSC4108SignInWithQR>;
|
|
33
|
+
/**
|
|
34
|
+
* Start a sign-in flow by generating a QR code that can be scanned by an existing authenticated client.
|
|
35
|
+
* The existing client will then help complete the authentication of the new device and link it to the same account,
|
|
36
|
+
* sharing the end-to-end encryption keys.
|
|
37
|
+
*
|
|
38
|
+
* @param tempClient temporary client used during the flow for the rendezvous channel
|
|
39
|
+
* @param onFailure callback for when the sign-in process fails
|
|
40
|
+
* @param abortSignal an AbortSignal that can be used to cancel the linking process,
|
|
41
|
+
* for example when the user cancels out of the flow.
|
|
42
|
+
* This will unbind the {@link onFailure} callback and prevent any further steps in the flow from being executed.
|
|
43
|
+
* @returns a promise that resolves to an instance of the sign-in flow
|
|
44
|
+
*/
|
|
45
|
+
export declare function signInByGeneratingQR(tempClient: MatrixClient, onFailure: RendezvousFailureListener, abortSignal: AbortSignal): Promise<MSC4108SignInWithQR>;
|
|
10
46
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rendezvous/index.ts"],"names":[],"mappings":"AAgBA,cAAc,0BAA0B,CAAC;AACzC,mBAAmB,wBAAwB,CAAC;AAC5C,mBAAmB,qBAAqB,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,mBAAmB,0BAA0B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rendezvous/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,YAAY,EAAyC,MAAM,cAAc,CAAC;AACxF,OAAO,EAAwB,KAAK,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAM/D,cAAc,0BAA0B,CAAC;AACzC,mBAAmB,wBAAwB,CAAC;AAC5C,mBAAmB,qBAAqB,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,mBAAmB,0BAA0B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AAEpC;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBpF;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,2BAA2B,CAC7C,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,yBAAyB,EACpC,WAAW,EAAE,WAAW,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAG9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACtC,UAAU,EAAE,YAAY,EACxB,SAAS,EAAE,yBAAyB,EACpC,WAAW,EAAE,WAAW,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAM9B"}
|
package/lib/rendezvous/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
1
2
|
/*
|
|
2
3
|
Copyright 2022 The Matrix.org Foundation C.I.C.
|
|
3
4
|
|
|
@@ -14,10 +15,124 @@ See the License for the specific language governing permissions and
|
|
|
14
15
|
limitations under the License.
|
|
15
16
|
*/
|
|
16
17
|
|
|
18
|
+
import { OAuthGrantType } from "../matrix.js";
|
|
19
|
+
import { MSC4108FailureReason } from "./RendezvousFailureReason.js";
|
|
20
|
+
import { MSC4108SignInWithQR } from "./MSC4108SignInWithQR.js";
|
|
21
|
+
import { MSC4108RendezvousSession } from "./transports/MSC4108RendezvousSession.js";
|
|
22
|
+
import { MSC4108SecureChannel } from "./channels/MSC4108SecureChannel.js";
|
|
23
|
+
import { RendezvousIntent } from "./RendezvousIntent.js";
|
|
24
|
+
import { logger } from "../logger.js";
|
|
17
25
|
export * from "./MSC4108SignInWithQR.js";
|
|
18
26
|
export * from "./RendezvousError.js";
|
|
19
27
|
export * from "./RendezvousFailureReason.js";
|
|
20
28
|
export * from "./RendezvousIntent.js";
|
|
21
29
|
export * from "./transports/index.js";
|
|
22
30
|
export * from "./channels/index.js";
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Check if the homeserver that the client is connected to supports a variant of sign-in with QR that we can use.
|
|
34
|
+
*
|
|
35
|
+
* @param client the client to check for sign-in with QR support
|
|
36
|
+
* @returns true if the homeserver that the client is connected to supports a variant of sign-in with QR that we can use, false otherwise.
|
|
37
|
+
*/
|
|
38
|
+
export function isSignInWithQRAvailable(_x) {
|
|
39
|
+
return _isSignInWithQRAvailable.apply(this, arguments);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Start a linking flow from an existing authenticated client by generating a QR code that can be scanned by the new device.
|
|
44
|
+
* The new device will then authenticate with the server and link itself to the same account as the existing client and
|
|
45
|
+
* share the end-to-end encryption keys.
|
|
46
|
+
*
|
|
47
|
+
* @param client the existing client
|
|
48
|
+
* @param onFailure callback for when the linking process fails
|
|
49
|
+
* @param abortSignal an AbortSignal that can be used to cancel the linking process,
|
|
50
|
+
* for example when the user cancels out of the flow.
|
|
51
|
+
* This will unbind the {@link onFailure} callback and prevent any further steps in the flow from being executed.
|
|
52
|
+
* @returns a promise that resolves to an instance of the linking flow
|
|
53
|
+
*/
|
|
54
|
+
function _isSignInWithQRAvailable() {
|
|
55
|
+
_isSignInWithQRAvailable = _asyncToGenerator(function* (client) {
|
|
56
|
+
var metadata;
|
|
57
|
+
try {
|
|
58
|
+
metadata = yield client.getAuthMetadata();
|
|
59
|
+
} catch (e) {
|
|
60
|
+
logger.warn("Failed to fetch auth metadata, assuming sign-in with QR is unavailable", e);
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// check for support of device authorization grant
|
|
65
|
+
if (!metadata.grant_types_supported.includes(OAuthGrantType.DeviceAuthorization)) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// check for unstable support for MSC4108 2024 version
|
|
70
|
+
return client.doesServerSupportUnstableFeature("org.matrix.msc4108");
|
|
71
|
+
});
|
|
72
|
+
return _isSignInWithQRAvailable.apply(this, arguments);
|
|
73
|
+
}
|
|
74
|
+
export function linkNewDeviceByGeneratingQR(_x2, _x3, _x4) {
|
|
75
|
+
return _linkNewDeviceByGeneratingQR.apply(this, arguments);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Start a sign-in flow by generating a QR code that can be scanned by an existing authenticated client.
|
|
80
|
+
* The existing client will then help complete the authentication of the new device and link it to the same account,
|
|
81
|
+
* sharing the end-to-end encryption keys.
|
|
82
|
+
*
|
|
83
|
+
* @param tempClient temporary client used during the flow for the rendezvous channel
|
|
84
|
+
* @param onFailure callback for when the sign-in process fails
|
|
85
|
+
* @param abortSignal an AbortSignal that can be used to cancel the linking process,
|
|
86
|
+
* for example when the user cancels out of the flow.
|
|
87
|
+
* This will unbind the {@link onFailure} callback and prevent any further steps in the flow from being executed.
|
|
88
|
+
* @returns a promise that resolves to an instance of the sign-in flow
|
|
89
|
+
*/
|
|
90
|
+
function _linkNewDeviceByGeneratingQR() {
|
|
91
|
+
_linkNewDeviceByGeneratingQR = _asyncToGenerator(function* (client, onFailure, abortSignal) {
|
|
92
|
+
// we assume rust crypto is already initialised
|
|
93
|
+
return initGenerateQrFlow(RendezvousIntent.RECIPROCATE_LOGIN_ON_EXISTING_DEVICE, client, onFailure, abortSignal);
|
|
94
|
+
});
|
|
95
|
+
return _linkNewDeviceByGeneratingQR.apply(this, arguments);
|
|
96
|
+
}
|
|
97
|
+
export function signInByGeneratingQR(_x5, _x6, _x7) {
|
|
98
|
+
return _signInByGeneratingQR.apply(this, arguments);
|
|
99
|
+
}
|
|
100
|
+
function _signInByGeneratingQR() {
|
|
101
|
+
_signInByGeneratingQR = _asyncToGenerator(function* (tempClient, onFailure, abortSignal) {
|
|
102
|
+
// ensure rust crypto is initialized as needed for the secure channel
|
|
103
|
+
var RustSdkCryptoJs = yield import("@matrix-org/matrix-sdk-crypto-wasm");
|
|
104
|
+
yield RustSdkCryptoJs.initAsync();
|
|
105
|
+
return initGenerateQrFlow(RendezvousIntent.LOGIN_ON_NEW_DEVICE, tempClient, onFailure, abortSignal);
|
|
106
|
+
});
|
|
107
|
+
return _signInByGeneratingQR.apply(this, arguments);
|
|
108
|
+
}
|
|
109
|
+
function initGenerateQrFlow(_x8, _x9, _x0, _x1) {
|
|
110
|
+
return _initGenerateQrFlow.apply(this, arguments);
|
|
111
|
+
}
|
|
112
|
+
function _initGenerateQrFlow() {
|
|
113
|
+
_initGenerateQrFlow = _asyncToGenerator(function* (intent, client, onFailure, abortSignal) {
|
|
114
|
+
var session = new MSC4108RendezvousSession({
|
|
115
|
+
onFailure,
|
|
116
|
+
client
|
|
117
|
+
});
|
|
118
|
+
var channel = new MSC4108SecureChannel(session, undefined, onFailure);
|
|
119
|
+
var flow = new MSC4108SignInWithQR(channel, false, intent === RendezvousIntent.LOGIN_ON_NEW_DEVICE ? undefined : client, onFailure);
|
|
120
|
+
if (abortSignal.aborted) return flow;
|
|
121
|
+
abortSignal.onabort = () => {
|
|
122
|
+
// Detach failure handlers
|
|
123
|
+
session.onFailure = undefined;
|
|
124
|
+
channel.onFailure = undefined;
|
|
125
|
+
flow.onFailure = undefined;
|
|
126
|
+
// Cancel the session
|
|
127
|
+
flow.cancel(MSC4108FailureReason.UserCancelled);
|
|
128
|
+
};
|
|
129
|
+
yield session.send(""); // open channel
|
|
130
|
+
|
|
131
|
+
if (!abortSignal.aborted) {
|
|
132
|
+
yield flow.generateCode();
|
|
133
|
+
}
|
|
134
|
+
return flow;
|
|
135
|
+
});
|
|
136
|
+
return _initGenerateQrFlow.apply(this, arguments);
|
|
137
|
+
}
|
|
23
138
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/rendezvous/index.ts"],"sourcesContent":["/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport * from \"./MSC4108SignInWithQR.ts\";\nexport type * from \"./RendezvousChannel.ts\";\nexport type * from \"./RendezvousCode.ts\";\nexport * from \"./RendezvousError.ts\";\nexport * from \"./RendezvousFailureReason.ts\";\nexport * from \"./RendezvousIntent.ts\";\nexport type * from \"./RendezvousTransport.ts\";\nexport * from \"./transports/index.ts\";\nexport * from \"./channels/index.ts\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,0BAA0B;AAGxC,cAAc,sBAAsB;AACpC,cAAc,8BAA8B;AAC5C,cAAc,uBAAuB;AAErC,cAAc,uBAAuB;AACrC,cAAc,qBAAqB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["OAuthGrantType","MSC4108FailureReason","MSC4108SignInWithQR","MSC4108RendezvousSession","MSC4108SecureChannel","RendezvousIntent","logger","isSignInWithQRAvailable","_x","_isSignInWithQRAvailable","apply","arguments","_asyncToGenerator","client","metadata","getAuthMetadata","e","warn","grant_types_supported","includes","DeviceAuthorization","doesServerSupportUnstableFeature","linkNewDeviceByGeneratingQR","_x2","_x3","_x4","_linkNewDeviceByGeneratingQR","onFailure","abortSignal","initGenerateQrFlow","RECIPROCATE_LOGIN_ON_EXISTING_DEVICE","signInByGeneratingQR","_x5","_x6","_x7","_signInByGeneratingQR","tempClient","RustSdkCryptoJs","initAsync","LOGIN_ON_NEW_DEVICE","_x8","_x9","_x0","_x1","_initGenerateQrFlow","intent","session","channel","undefined","flow","aborted","onabort","cancel","UserCancelled","send","generateCode"],"sources":["../../src/rendezvous/index.ts"],"sourcesContent":["/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { type MatrixClient, OAuthGrantType, type OidcClientConfig } from \"../matrix.ts\";\nimport { MSC4108FailureReason, type RendezvousFailureListener } from \"./RendezvousFailureReason.ts\";\nimport { MSC4108SignInWithQR } from \"./MSC4108SignInWithQR.ts\";\nimport { MSC4108RendezvousSession } from \"./transports/MSC4108RendezvousSession.ts\";\nimport { MSC4108SecureChannel } from \"./channels/MSC4108SecureChannel.ts\";\nimport { RendezvousIntent } from \"./RendezvousIntent.ts\";\nimport { logger } from \"../logger.ts\";\n\nexport * from \"./MSC4108SignInWithQR.ts\";\nexport type * from \"./RendezvousChannel.ts\";\nexport type * from \"./RendezvousCode.ts\";\nexport * from \"./RendezvousError.ts\";\nexport * from \"./RendezvousFailureReason.ts\";\nexport * from \"./RendezvousIntent.ts\";\nexport type * from \"./RendezvousTransport.ts\";\nexport * from \"./transports/index.ts\";\nexport * from \"./channels/index.ts\";\n\n/**\n * Check if the homeserver that the client is connected to supports a variant of sign-in with QR that we can use.\n *\n * @param client the client to check for sign-in with QR support\n * @returns true if the homeserver that the client is connected to supports a variant of sign-in with QR that we can use, false otherwise.\n */\nexport async function isSignInWithQRAvailable(client: MatrixClient): Promise<boolean> {\n let metadata: OidcClientConfig;\n try {\n metadata = await client.getAuthMetadata();\n } catch (e) {\n logger.warn(\"Failed to fetch auth metadata, assuming sign-in with QR is unavailable\", e);\n return false;\n }\n\n // check for support of device authorization grant\n if (!metadata.grant_types_supported.includes(OAuthGrantType.DeviceAuthorization)) {\n return false;\n }\n\n // check for unstable support for MSC4108 2024 version\n return client.doesServerSupportUnstableFeature(\"org.matrix.msc4108\");\n}\n\n/**\n * Start a linking flow from an existing authenticated client by generating a QR code that can be scanned by the new device.\n * The new device will then authenticate with the server and link itself to the same account as the existing client and\n * share the end-to-end encryption keys.\n *\n * @param client the existing client\n * @param onFailure callback for when the linking process fails\n * @param abortSignal an AbortSignal that can be used to cancel the linking process,\n * for example when the user cancels out of the flow.\n * This will unbind the {@link onFailure} callback and prevent any further steps in the flow from being executed.\n * @returns a promise that resolves to an instance of the linking flow\n */\nexport async function linkNewDeviceByGeneratingQR(\n client: MatrixClient,\n onFailure: RendezvousFailureListener,\n abortSignal: AbortSignal,\n): Promise<MSC4108SignInWithQR> {\n // we assume rust crypto is already initialised\n return initGenerateQrFlow(RendezvousIntent.RECIPROCATE_LOGIN_ON_EXISTING_DEVICE, client, onFailure, abortSignal);\n}\n\n/**\n * Start a sign-in flow by generating a QR code that can be scanned by an existing authenticated client.\n * The existing client will then help complete the authentication of the new device and link it to the same account,\n * sharing the end-to-end encryption keys.\n *\n * @param tempClient temporary client used during the flow for the rendezvous channel\n * @param onFailure callback for when the sign-in process fails\n * @param abortSignal an AbortSignal that can be used to cancel the linking process,\n * for example when the user cancels out of the flow.\n * This will unbind the {@link onFailure} callback and prevent any further steps in the flow from being executed.\n * @returns a promise that resolves to an instance of the sign-in flow\n */\nexport async function signInByGeneratingQR(\n tempClient: MatrixClient,\n onFailure: RendezvousFailureListener,\n abortSignal: AbortSignal,\n): Promise<MSC4108SignInWithQR> {\n // ensure rust crypto is initialized as needed for the secure channel\n const RustSdkCryptoJs = await import(\"@matrix-org/matrix-sdk-crypto-wasm\");\n await RustSdkCryptoJs.initAsync();\n\n return initGenerateQrFlow(RendezvousIntent.LOGIN_ON_NEW_DEVICE, tempClient, onFailure, abortSignal);\n}\n\nasync function initGenerateQrFlow(\n intent: RendezvousIntent,\n client: MatrixClient,\n onFailure: RendezvousFailureListener,\n abortSignal: AbortSignal,\n): Promise<MSC4108SignInWithQR> {\n const session = new MSC4108RendezvousSession({\n onFailure,\n client,\n });\n const channel = new MSC4108SecureChannel(session, undefined, onFailure);\n const flow = new MSC4108SignInWithQR(\n channel,\n false,\n intent === RendezvousIntent.LOGIN_ON_NEW_DEVICE ? undefined : client,\n onFailure,\n );\n\n if (abortSignal.aborted) return flow;\n\n abortSignal.onabort = (): void => {\n // Detach failure handlers\n session.onFailure = undefined;\n channel.onFailure = undefined;\n flow.onFailure = undefined;\n // Cancel the session\n flow.cancel(MSC4108FailureReason.UserCancelled);\n };\n\n await session.send(\"\"); // open channel\n\n if (!abortSignal.aborted) {\n await flow.generateCode();\n }\n\n return flow;\n}\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAA4BA,cAAc,QAA+B,cAAc;AACvF,SAASC,oBAAoB,QAAwC,8BAA8B;AACnG,SAASC,mBAAmB,QAAQ,0BAA0B;AAC9D,SAASC,wBAAwB,QAAQ,0CAA0C;AACnF,SAASC,oBAAoB,QAAQ,oCAAoC;AACzE,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,MAAM,QAAQ,cAAc;AAErC,cAAc,0BAA0B;AAGxC,cAAc,sBAAsB;AACpC,cAAc,8BAA8B;AAC5C,cAAc,uBAAuB;AAErC,cAAc,uBAAuB;AACrC,cAAc,qBAAqB;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAsBC,uBAAuBA,CAAAC,EAAA;EAAA,OAAAC,wBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;;AAkB7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA,SAAAF,yBAAA;EAAAA,wBAAA,GAAAG,iBAAA,CAlBO,WAAuCC,MAAoB,EAAoB;IAClF,IAAIC,QAA0B;IAC9B,IAAI;MACAA,QAAQ,SAASD,MAAM,CAACE,eAAe,CAAC,CAAC;IAC7C,CAAC,CAAC,OAAOC,CAAC,EAAE;MACRV,MAAM,CAACW,IAAI,CAAC,wEAAwE,EAAED,CAAC,CAAC;MACxF,OAAO,KAAK;IAChB;;IAEA;IACA,IAAI,CAACF,QAAQ,CAACI,qBAAqB,CAACC,QAAQ,CAACnB,cAAc,CAACoB,mBAAmB,CAAC,EAAE;MAC9E,OAAO,KAAK;IAChB;;IAEA;IACA,OAAOP,MAAM,CAACQ,gCAAgC,CAAC,oBAAoB,CAAC;EACxE,CAAC;EAAA,OAAAZ,wBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAcD,gBAAsBW,2BAA2BA,CAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,4BAAA,CAAAhB,KAAA,OAAAC,SAAA;AAAA;;AASjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA,SAAAe,6BAAA;EAAAA,4BAAA,GAAAd,iBAAA,CATO,WACHC,MAAoB,EACpBc,SAAoC,EACpCC,WAAwB,EACI;IAC5B;IACA,OAAOC,kBAAkB,CAACxB,gBAAgB,CAACyB,oCAAoC,EAAEjB,MAAM,EAAEc,SAAS,EAAEC,WAAW,CAAC;EACpH,CAAC;EAAA,OAAAF,4BAAA,CAAAhB,KAAA,OAAAC,SAAA;AAAA;AAcD,gBAAsBoB,oBAAoBA,CAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,qBAAA,CAAAzB,KAAA,OAAAC,SAAA;AAAA;AAUzC,SAAAwB,sBAAA;EAAAA,qBAAA,GAAAvB,iBAAA,CAVM,WACHwB,UAAwB,EACxBT,SAAoC,EACpCC,WAAwB,EACI;IAC5B;IACA,IAAMS,eAAe,SAAS,MAAM,CAAC,oCAAoC,CAAC;IAC1E,MAAMA,eAAe,CAACC,SAAS,CAAC,CAAC;IAEjC,OAAOT,kBAAkB,CAACxB,gBAAgB,CAACkC,mBAAmB,EAAEH,UAAU,EAAET,SAAS,EAAEC,WAAW,CAAC;EACvG,CAAC;EAAA,OAAAO,qBAAA,CAAAzB,KAAA,OAAAC,SAAA;AAAA;AAAA,SAEckB,kBAAkBA,CAAAW,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,mBAAA,CAAAlC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAiC,oBAAA;EAAAA,mBAAA,GAAAhC,iBAAA,CAAjC,WACIiC,MAAwB,EACxBhC,MAAoB,EACpBc,SAAoC,EACpCC,WAAwB,EACI;IAC5B,IAAMkB,OAAO,GAAG,IAAI3C,wBAAwB,CAAC;MACzCwB,SAAS;MACTd;IACJ,CAAC,CAAC;IACF,IAAMkC,OAAO,GAAG,IAAI3C,oBAAoB,CAAC0C,OAAO,EAAEE,SAAS,EAAErB,SAAS,CAAC;IACvE,IAAMsB,IAAI,GAAG,IAAI/C,mBAAmB,CAChC6C,OAAO,EACP,KAAK,EACLF,MAAM,KAAKxC,gBAAgB,CAACkC,mBAAmB,GAAGS,SAAS,GAAGnC,MAAM,EACpEc,SACJ,CAAC;IAED,IAAIC,WAAW,CAACsB,OAAO,EAAE,OAAOD,IAAI;IAEpCrB,WAAW,CAACuB,OAAO,GAAG,MAAY;MAC9B;MACAL,OAAO,CAACnB,SAAS,GAAGqB,SAAS;MAC7BD,OAAO,CAACpB,SAAS,GAAGqB,SAAS;MAC7BC,IAAI,CAACtB,SAAS,GAAGqB,SAAS;MAC1B;MACAC,IAAI,CAACG,MAAM,CAACnD,oBAAoB,CAACoD,aAAa,CAAC;IACnD,CAAC;IAED,MAAMP,OAAO,CAACQ,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;;IAExB,IAAI,CAAC1B,WAAW,CAACsB,OAAO,EAAE;MACtB,MAAMD,IAAI,CAACM,YAAY,CAAC,CAAC;IAC7B;IAEA,OAAON,IAAI;EACf,CAAC;EAAA,OAAAL,mBAAA,CAAAlC,KAAA,OAAAC,SAAA;AAAA","ignoreList":[]}
|
|
@@ -10,7 +10,7 @@ export declare class MSC4108RendezvousSession {
|
|
|
10
10
|
private readonly client?;
|
|
11
11
|
private readonly fallbackRzServer?;
|
|
12
12
|
private readonly fetchFn?;
|
|
13
|
-
|
|
13
|
+
onFailure?: RendezvousFailureListener;
|
|
14
14
|
private etag?;
|
|
15
15
|
private expiresAt?;
|
|
16
16
|
private expiresTimer?;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MSC4108RendezvousSession.d.ts","sourceRoot":"","sources":["../../../src/rendezvous/transports/MSC4108RendezvousSession.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,6BAA6B,EAAE,oBAAoB,EAAE,KAAK,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAClH,OAAO,EAAE,KAAK,YAAY,EAAU,MAAM,iBAAiB,CAAC;AAG5D;;;;GAIG;AACH,qBAAa,wBAAwB;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA0B;
|
|
1
|
+
{"version":3,"file":"MSC4108RendezvousSession.d.ts","sourceRoot":"","sources":["../../../src/rendezvous/transports/MSC4108RendezvousSession.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,6BAA6B,EAAE,oBAAoB,EAAE,KAAK,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAClH,OAAO,EAAE,KAAK,YAAY,EAAU,MAAM,iBAAiB,CAAC;AAG5D;;;;GAIG;AACH,qBAAa,wBAAwB;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA0B;IAC5C,SAAS,CAAC,EAAE,yBAAyB,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAS;IACtB,OAAO,CAAC,SAAS,CAAC,CAAO;IACzB,OAAO,CAAC,YAAY,CAAC,CAAgC;IACrD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;gBAEJ,EACf,SAAS,EACT,GAAG,EACH,OAAO,GACV,EAAE;QACC,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;QAClC,SAAS,CAAC,EAAE,yBAAyB,CAAC;QACtC,GAAG,EAAE,MAAM,CAAC;KACf;gBACkB,EACf,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,OAAO,GACV,EAAE;QACC,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;QAClC,SAAS,CAAC,EAAE,yBAAyB,CAAC;QACtC,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC7B;IAqBD;;OAEG;IACH,IAAW,KAAK,IAAI,OAAO,CAE1B;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,OAAO,CAAC,KAAK;YAOC,eAAe;IAgB7B;;;OAGG;IACU,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuD9C;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA6CnD;;;;OAIG;IACU,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBhG;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAetC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MSC4108RendezvousSession.js","names":["logger","sleep","ClientRendezvousFailureReason","MSC4108FailureReason","Method","ClientPrefix","MSC4108RendezvousSession","constructor","_ref","fetchFn","onFailure","url","client","fallbackRzServer","_defineProperty","ready","_ready","cancelled","_cancelled","fetch","resource","options","globalThis","getPostEndpoint","_this","_asyncToGenerator","doesServerSupportUnstableFeature","http","getUrl","undefined","Unstable","toString","err","warn","send","data","_this2","_this2$url","_res$headers$get","method","Put","Post","uri","Error","headers","etag","receive","info","concat","res","body","redirect","status","cancel","Unknown","get","expires","expiresTimer","clearTimeout","expiresAt","Date","setTimeout","Expired","getTime","now","json","_this3","_poll$headers$get","poll","Get","ETagMissing","text","reason","_this4","_this4$onFailure","call","UserDeclined","UserCancelled","close","_this5","Delete","e"],"sources":["../../../src/rendezvous/transports/MSC4108RendezvousSession.ts"],"sourcesContent":["/*\nCopyright 2024 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { logger } from \"../../logger.ts\";\nimport { sleep } from \"../../utils.ts\";\nimport { ClientRendezvousFailureReason, MSC4108FailureReason, type RendezvousFailureListener } from \"../index.ts\";\nimport { type MatrixClient, Method } from \"../../matrix.ts\";\nimport { ClientPrefix } from \"../../http-api/index.ts\";\n\n/**\n * Prototype of the unstable [MSC4108](https://github.com/matrix-org/matrix-spec-proposals/pull/4108)\n * insecure rendezvous session protocol.\n * @experimental Note that this is UNSTABLE and may have breaking changes without notice.\n */\nexport class MSC4108RendezvousSession {\n public url?: string;\n private readonly client?: MatrixClient;\n private readonly fallbackRzServer?: string;\n private readonly fetchFn?: typeof globalThis.fetch;\n private readonly onFailure?: RendezvousFailureListener;\n private etag?: string;\n private expiresAt?: Date;\n private expiresTimer?: ReturnType<typeof setTimeout>;\n private _cancelled = false;\n private _ready = false;\n\n public constructor({\n onFailure,\n url,\n fetchFn,\n }: {\n fetchFn?: typeof globalThis.fetch;\n onFailure?: RendezvousFailureListener;\n url: string;\n });\n public constructor({\n onFailure,\n client,\n fallbackRzServer,\n fetchFn,\n }: {\n fetchFn?: typeof globalThis.fetch;\n onFailure?: RendezvousFailureListener;\n client?: MatrixClient;\n fallbackRzServer?: string;\n });\n public constructor({\n fetchFn,\n onFailure,\n url,\n client,\n fallbackRzServer,\n }: {\n fetchFn?: typeof globalThis.fetch;\n onFailure?: RendezvousFailureListener;\n url?: string;\n client?: MatrixClient;\n fallbackRzServer?: string;\n }) {\n this.fetchFn = fetchFn;\n this.onFailure = onFailure;\n this.client = client;\n this.fallbackRzServer = fallbackRzServer;\n this.url = url;\n }\n\n /**\n * Returns whether the channel is ready to be used.\n */\n public get ready(): boolean {\n return this._ready;\n }\n\n /**\n * Returns whether the channel has been cancelled.\n */\n public get cancelled(): boolean {\n return this._cancelled;\n }\n\n private fetch(resource: URL | string, options?: RequestInit): ReturnType<typeof globalThis.fetch> {\n if (this.fetchFn) {\n return this.fetchFn(resource, options);\n }\n return globalThis.fetch(resource, options);\n }\n\n private async getPostEndpoint(): Promise<string | undefined> {\n if (this.client) {\n try {\n if (await this.client.doesServerSupportUnstableFeature(\"org.matrix.msc4108\")) {\n return this.client.http\n .getUrl(\"/org.matrix.msc4108/rendezvous\", undefined, ClientPrefix.Unstable)\n .toString();\n }\n } catch (err) {\n logger.warn(\"Failed to get unstable features\", err);\n }\n }\n\n return this.fallbackRzServer;\n }\n\n /**\n * Sends data via the rendezvous channel.\n * @param data the payload to send\n */\n public async send(data: string): Promise<void> {\n if (this._cancelled) {\n return;\n }\n const method = this.url ? Method.Put : Method.Post;\n const uri = this.url ?? (await this.getPostEndpoint());\n\n if (!uri) {\n throw new Error(\"Invalid rendezvous URI\");\n }\n\n const headers: Record<string, string> = { \"content-type\": \"text/plain\" };\n\n // if we didn't create the rendezvous channel, we need to fetch the first etag if needed\n if (!this.etag && this.url) {\n await this.receive();\n }\n\n if (this.etag) {\n headers[\"if-match\"] = this.etag;\n }\n\n logger.info(`=> ${method} ${uri} with ${data} if-match: ${this.etag}`);\n\n const res = await this.fetch(uri, { method, headers, body: data, redirect: \"follow\" });\n if (res.status === 404) {\n return this.cancel(ClientRendezvousFailureReason.Unknown);\n }\n this.etag = res.headers.get(\"etag\") ?? undefined;\n\n logger.info(`Received etag: ${this.etag}`);\n\n if (method === Method.Post) {\n const expires = res.headers.get(\"expires\");\n if (expires) {\n if (this.expiresTimer) {\n clearTimeout(this.expiresTimer);\n this.expiresTimer = undefined;\n }\n this.expiresAt = new Date(expires);\n this.expiresTimer = setTimeout(() => {\n this.expiresTimer = undefined;\n this.cancel(ClientRendezvousFailureReason.Expired);\n }, this.expiresAt.getTime() - Date.now());\n }\n // MSC4108: we expect a JSON response with a rendezvous URL\n const json = await res.json();\n if (typeof json.url !== \"string\") {\n throw new Error(\"No rendezvous URL given\");\n }\n this.url = json.url;\n this._ready = true;\n }\n }\n\n /**\n * Receives data from the rendezvous channel.\n * @return the returned promise won't resolve until new data is acquired or the channel is closed either by the server or the other party.\n */\n public async receive(): Promise<string | undefined> {\n if (!this.url) {\n throw new Error(\"Rendezvous not set up\");\n }\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (this._cancelled) {\n return undefined;\n }\n\n const headers: Record<string, string> = {};\n if (this.etag) {\n headers[\"if-none-match\"] = this.etag;\n }\n\n logger.info(`=> GET ${this.url} if-none-match: ${this.etag}`);\n const poll = await this.fetch(this.url, { method: Method.Get, headers });\n\n if (poll.status === 404) {\n await this.cancel(ClientRendezvousFailureReason.Unknown);\n return undefined;\n }\n\n // rely on server expiring the channel rather than checking ourselves\n\n const etag = poll.headers.get(\"etag\") ?? undefined;\n if (poll.headers.get(\"content-type\") !== \"text/plain\") {\n this.etag = etag;\n } else if (poll.status === 200) {\n if (!etag) {\n // Some browsers & extensions block the ETag header for anti-tracking purposes\n // We try and detect this so the client can give the user a somewhat helpful message\n await this.cancel(ClientRendezvousFailureReason.ETagMissing);\n return undefined;\n }\n\n this.etag = etag;\n const text = await poll.text();\n logger.info(`Received: ${text} with etag ${this.etag}`);\n return text;\n }\n await sleep(1000);\n }\n }\n\n /**\n * Cancels the rendezvous channel.\n * If the reason is user_declined or user_cancelled then the channel will also be closed.\n * @param reason the reason to cancel with\n */\n public async cancel(reason: MSC4108FailureReason | ClientRendezvousFailureReason): Promise<void> {\n if (this._cancelled) return;\n if (this.expiresTimer) {\n clearTimeout(this.expiresTimer);\n this.expiresTimer = undefined;\n }\n\n if (\n reason === ClientRendezvousFailureReason.Unknown &&\n this.expiresAt &&\n this.expiresAt.getTime() < Date.now()\n ) {\n reason = ClientRendezvousFailureReason.Expired;\n }\n\n this._cancelled = true;\n this._ready = false;\n this.onFailure?.(reason);\n\n if (reason === ClientRendezvousFailureReason.UserDeclined || reason === MSC4108FailureReason.UserCancelled) {\n await this.close();\n }\n }\n\n /**\n * Closes the rendezvous channel.\n */\n public async close(): Promise<void> {\n if (this.expiresTimer) {\n clearTimeout(this.expiresTimer);\n this.expiresTimer = undefined;\n }\n\n if (!this.url) return;\n try {\n const method = Method.Delete;\n logger.info(`=> ${method} ${this.url}`);\n await this.fetch(this.url, { method });\n } catch (e) {\n logger.warn(e);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"MSC4108RendezvousSession.js","names":["logger","sleep","ClientRendezvousFailureReason","MSC4108FailureReason","Method","ClientPrefix","MSC4108RendezvousSession","constructor","_ref","fetchFn","onFailure","url","client","fallbackRzServer","_defineProperty","ready","_ready","cancelled","_cancelled","fetch","resource","options","globalThis","getPostEndpoint","_this","_asyncToGenerator","doesServerSupportUnstableFeature","http","getUrl","undefined","Unstable","toString","err","warn","send","data","_this2","_this2$url","_res$headers$get","method","Put","Post","uri","Error","headers","etag","receive","info","concat","res","body","redirect","status","cancel","Unknown","get","expires","expiresTimer","clearTimeout","expiresAt","Date","setTimeout","Expired","getTime","now","json","_this3","_poll$headers$get","poll","Get","ETagMissing","text","reason","_this4","_this4$onFailure","call","UserDeclined","UserCancelled","close","_this5","Delete","e"],"sources":["../../../src/rendezvous/transports/MSC4108RendezvousSession.ts"],"sourcesContent":["/*\nCopyright 2024 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { logger } from \"../../logger.ts\";\nimport { sleep } from \"../../utils.ts\";\nimport { ClientRendezvousFailureReason, MSC4108FailureReason, type RendezvousFailureListener } from \"../index.ts\";\nimport { type MatrixClient, Method } from \"../../matrix.ts\";\nimport { ClientPrefix } from \"../../http-api/index.ts\";\n\n/**\n * Prototype of the unstable [MSC4108](https://github.com/matrix-org/matrix-spec-proposals/pull/4108)\n * insecure rendezvous session protocol.\n * @experimental Note that this is UNSTABLE and may have breaking changes without notice.\n */\nexport class MSC4108RendezvousSession {\n public url?: string;\n private readonly client?: MatrixClient;\n private readonly fallbackRzServer?: string;\n private readonly fetchFn?: typeof globalThis.fetch;\n public onFailure?: RendezvousFailureListener;\n private etag?: string;\n private expiresAt?: Date;\n private expiresTimer?: ReturnType<typeof setTimeout>;\n private _cancelled = false;\n private _ready = false;\n\n public constructor({\n onFailure,\n url,\n fetchFn,\n }: {\n fetchFn?: typeof globalThis.fetch;\n onFailure?: RendezvousFailureListener;\n url: string;\n });\n public constructor({\n onFailure,\n client,\n fallbackRzServer,\n fetchFn,\n }: {\n fetchFn?: typeof globalThis.fetch;\n onFailure?: RendezvousFailureListener;\n client?: MatrixClient;\n fallbackRzServer?: string;\n });\n public constructor({\n fetchFn,\n onFailure,\n url,\n client,\n fallbackRzServer,\n }: {\n fetchFn?: typeof globalThis.fetch;\n onFailure?: RendezvousFailureListener;\n url?: string;\n client?: MatrixClient;\n fallbackRzServer?: string;\n }) {\n this.fetchFn = fetchFn;\n this.onFailure = onFailure;\n this.client = client;\n this.fallbackRzServer = fallbackRzServer;\n this.url = url;\n }\n\n /**\n * Returns whether the channel is ready to be used.\n */\n public get ready(): boolean {\n return this._ready;\n }\n\n /**\n * Returns whether the channel has been cancelled.\n */\n public get cancelled(): boolean {\n return this._cancelled;\n }\n\n private fetch(resource: URL | string, options?: RequestInit): ReturnType<typeof globalThis.fetch> {\n if (this.fetchFn) {\n return this.fetchFn(resource, options);\n }\n return globalThis.fetch(resource, options);\n }\n\n private async getPostEndpoint(): Promise<string | undefined> {\n if (this.client) {\n try {\n if (await this.client.doesServerSupportUnstableFeature(\"org.matrix.msc4108\")) {\n return this.client.http\n .getUrl(\"/org.matrix.msc4108/rendezvous\", undefined, ClientPrefix.Unstable)\n .toString();\n }\n } catch (err) {\n logger.warn(\"Failed to get unstable features\", err);\n }\n }\n\n return this.fallbackRzServer;\n }\n\n /**\n * Sends data via the rendezvous channel.\n * @param data the payload to send\n */\n public async send(data: string): Promise<void> {\n if (this._cancelled) {\n return;\n }\n const method = this.url ? Method.Put : Method.Post;\n const uri = this.url ?? (await this.getPostEndpoint());\n\n if (!uri) {\n throw new Error(\"Invalid rendezvous URI\");\n }\n\n const headers: Record<string, string> = { \"content-type\": \"text/plain\" };\n\n // if we didn't create the rendezvous channel, we need to fetch the first etag if needed\n if (!this.etag && this.url) {\n await this.receive();\n }\n\n if (this.etag) {\n headers[\"if-match\"] = this.etag;\n }\n\n logger.info(`=> ${method} ${uri} with ${data} if-match: ${this.etag}`);\n\n const res = await this.fetch(uri, { method, headers, body: data, redirect: \"follow\" });\n if (res.status === 404) {\n return this.cancel(ClientRendezvousFailureReason.Unknown);\n }\n this.etag = res.headers.get(\"etag\") ?? undefined;\n\n logger.info(`Received etag: ${this.etag}`);\n\n if (method === Method.Post) {\n const expires = res.headers.get(\"expires\");\n if (expires) {\n if (this.expiresTimer) {\n clearTimeout(this.expiresTimer);\n this.expiresTimer = undefined;\n }\n this.expiresAt = new Date(expires);\n this.expiresTimer = setTimeout(() => {\n this.expiresTimer = undefined;\n this.cancel(ClientRendezvousFailureReason.Expired);\n }, this.expiresAt.getTime() - Date.now());\n }\n // MSC4108: we expect a JSON response with a rendezvous URL\n const json = await res.json();\n if (typeof json.url !== \"string\") {\n throw new Error(\"No rendezvous URL given\");\n }\n this.url = json.url;\n this._ready = true;\n }\n }\n\n /**\n * Receives data from the rendezvous channel.\n * @return the returned promise won't resolve until new data is acquired or the channel is closed either by the server or the other party.\n */\n public async receive(): Promise<string | undefined> {\n if (!this.url) {\n throw new Error(\"Rendezvous not set up\");\n }\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (this._cancelled) {\n return undefined;\n }\n\n const headers: Record<string, string> = {};\n if (this.etag) {\n headers[\"if-none-match\"] = this.etag;\n }\n\n logger.info(`=> GET ${this.url} if-none-match: ${this.etag}`);\n const poll = await this.fetch(this.url, { method: Method.Get, headers });\n\n if (poll.status === 404) {\n await this.cancel(ClientRendezvousFailureReason.Unknown);\n return undefined;\n }\n\n // rely on server expiring the channel rather than checking ourselves\n\n const etag = poll.headers.get(\"etag\") ?? undefined;\n if (poll.headers.get(\"content-type\") !== \"text/plain\") {\n this.etag = etag;\n } else if (poll.status === 200) {\n if (!etag) {\n // Some browsers & extensions block the ETag header for anti-tracking purposes\n // We try and detect this so the client can give the user a somewhat helpful message\n await this.cancel(ClientRendezvousFailureReason.ETagMissing);\n return undefined;\n }\n\n this.etag = etag;\n const text = await poll.text();\n logger.info(`Received: ${text} with etag ${this.etag}`);\n return text;\n }\n await sleep(1000);\n }\n }\n\n /**\n * Cancels the rendezvous channel.\n * If the reason is user_declined or user_cancelled then the channel will also be closed.\n * @param reason the reason to cancel with\n */\n public async cancel(reason: MSC4108FailureReason | ClientRendezvousFailureReason): Promise<void> {\n if (this._cancelled) return;\n if (this.expiresTimer) {\n clearTimeout(this.expiresTimer);\n this.expiresTimer = undefined;\n }\n\n if (\n reason === ClientRendezvousFailureReason.Unknown &&\n this.expiresAt &&\n this.expiresAt.getTime() < Date.now()\n ) {\n reason = ClientRendezvousFailureReason.Expired;\n }\n\n this._cancelled = true;\n this._ready = false;\n this.onFailure?.(reason);\n\n if (reason === ClientRendezvousFailureReason.UserDeclined || reason === MSC4108FailureReason.UserCancelled) {\n await this.close();\n }\n }\n\n /**\n * Closes the rendezvous channel.\n */\n public async close(): Promise<void> {\n if (this.expiresTimer) {\n clearTimeout(this.expiresTimer);\n this.expiresTimer = undefined;\n }\n\n if (!this.url) return;\n try {\n const method = Method.Delete;\n logger.info(`=> ${method} ${this.url}`);\n await this.fetch(this.url, { method });\n } catch (e) {\n logger.warn(e);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rust-crypto.d.ts","sourceRoot":"","sources":["../../src/rust-crypto/rust-crypto.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"rust-crypto.d.ts","sourceRoot":"","sources":["../../src/rust-crypto/rust-crypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -2388,12 +2388,12 @@ function rustEncryptionInfoToJsEncryptionInfo(logger, encryptionInfo) {
|
|
|
2388
2388
|
* Determines if the given payload is a RoomKeyBundleMessage.
|
|
2389
2389
|
*
|
|
2390
2390
|
* A RoomKeyBundleMessage is identified by having a specific message type
|
|
2391
|
-
* ("
|
|
2391
|
+
* ("m.room_key_bundle") and a valid room_id in its content.
|
|
2392
2392
|
*
|
|
2393
2393
|
* @param message - The received to-device message to check.
|
|
2394
2394
|
* @returns True if the payload matches the RoomKeyBundleMessage structure, false otherwise.
|
|
2395
2395
|
*/
|
|
2396
2396
|
function isRoomKeyBundleMessage(message) {
|
|
2397
|
-
return message.type === "io.element.msc4268.room_key_bundle" && typeof message.content.room_id === "string";
|
|
2397
|
+
return (message.type === "io.element.msc4268.room_key_bundle" || message.type === "m.room_key_bundle") && typeof message.content.room_id === "string";
|
|
2398
2398
|
}
|
|
2399
2399
|
//# sourceMappingURL=rust-crypto.js.map
|