livekit-client 2.11.1 → 2.11.3
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/dist/livekit-client.e2ee.worker.js +1 -1
- package/dist/livekit-client.e2ee.worker.js.map +1 -1
- package/dist/livekit-client.e2ee.worker.mjs +10 -6
- package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
- package/dist/livekit-client.esm.mjs +40 -25
- package/dist/livekit-client.esm.mjs.map +1 -1
- package/dist/livekit-client.umd.js +1 -1
- package/dist/livekit-client.umd.js.map +1 -1
- package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
- package/dist/src/e2ee/constants.d.ts.map +1 -1
- package/dist/src/e2ee/types.d.ts +2 -0
- package/dist/src/e2ee/types.d.ts.map +1 -1
- package/dist/src/e2ee/utils.d.ts +1 -1
- package/dist/src/e2ee/utils.d.ts.map +1 -1
- package/dist/src/e2ee/worker/ParticipantKeyHandler.d.ts +3 -2
- package/dist/src/e2ee/worker/ParticipantKeyHandler.d.ts.map +1 -1
- package/dist/src/room/track/create.d.ts.map +1 -1
- package/dist/src/utils/cloneDeep.d.ts +1 -1
- package/dist/src/utils/cloneDeep.d.ts.map +1 -1
- package/dist/ts4.2/src/e2ee/types.d.ts +2 -0
- package/dist/ts4.2/src/e2ee/utils.d.ts +1 -1
- package/dist/ts4.2/src/e2ee/worker/ParticipantKeyHandler.d.ts +3 -2
- package/dist/ts4.2/src/utils/cloneDeep.d.ts +1 -1
- package/package.json +1 -1
- package/src/api/utils.test.ts +7 -0
- package/src/api/utils.ts +2 -2
- package/src/e2ee/E2eeManager.ts +11 -2
- package/src/e2ee/constants.ts +1 -0
- package/src/e2ee/types.ts +2 -0
- package/src/e2ee/utils.ts +2 -1
- package/src/e2ee/worker/ParticipantKeyHandler.ts +4 -2
- package/src/e2ee/worker/e2ee.worker.ts +2 -2
- package/src/room/track/create.ts +21 -8
- package/src/room/track/utils.ts +2 -2
- package/src/utils/cloneDeep.ts +2 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"E2eeManager.d.ts","sourceRoot":"","sources":["../../../src/e2ee/E2eeManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,iBAAiB,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AAWrC,OAAO,EAAE,KAAK,oBAAoB,EAAqC,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAYnB,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACrC,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClF,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IACzC,EAAE,CAAC,CAAC,SAAS,MAAM,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC7F;gCAM0B,UAAU,iBAAiB,CAAC,oBAAoB,CAAC;AAJ5E;;GAEG;AACH,qBAAa,WACX,SAAQ,gBACR,YAAW,eAAe;IAE1B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAEtB,OAAO,CAAC,iBAAiB,CAAU;IAEnC,OAAO,CAAC,WAAW,CAAkB;gBAEzB,OAAO,EAAE,kBAAkB;IAOvC;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,IAAI;IA2BhB;;OAEG;IACH,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM;IAK1E;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,UAAU;IAQjC,OAAO,CAAC,eAAe,CA+CrB;IAEF,OAAO,CAAC,aAAa,CAGnB;IAEK,WAAW,CAAC,MAAM,EAAE,SAAS;IAMpC,OAAO,CAAC,mBAAmB;
|
1
|
+
{"version":3,"file":"E2eeManager.d.ts","sourceRoot":"","sources":["../../../src/e2ee/E2eeManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,iBAAiB,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AAWrC,OAAO,EAAE,KAAK,oBAAoB,EAAqC,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAYnB,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACrC,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClF,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IACzC,EAAE,CAAC,CAAC,SAAS,MAAM,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC7F;gCAM0B,UAAU,iBAAiB,CAAC,oBAAoB,CAAC;AAJ5E;;GAEG;AACH,qBAAa,WACX,SAAQ,gBACR,YAAW,eAAe;IAE1B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAEtB,OAAO,CAAC,iBAAiB,CAAU;IAEnC,OAAO,CAAC,WAAW,CAAkB;gBAEzB,OAAO,EAAE,kBAAkB;IAOvC;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,IAAI;IA2BhB;;OAEG;IACH,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM;IAK1E;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,UAAU;IAQjC,OAAO,CAAC,eAAe,CA+CrB;IAEF,OAAO,CAAC,aAAa,CAGnB;IAEK,WAAW,CAAC,MAAM,EAAE,SAAS;IAMpC,OAAO,CAAC,mBAAmB;IA4D3B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,eAAe;IAQvB;;;;OAIG;YACW,cAAc;IAiE5B;;;;OAIG;IACH,OAAO,CAAC,YAAY;CAuCrB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/e2ee/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAG9C,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAY/C,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAIX,eAAO,MAAM,SAAS,KAAK,CAAC;AAG5B,eAAO,MAAM,SAAS,YAAY,CAAC;AAEnC,eAAO,MAAM,IAAI,yBAAyB,CAAC;AAE3C,eAAO,MAAM,qBAAqB,EAAE,
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/e2ee/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAG9C,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAY/C,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAIX,eAAO,MAAM,SAAS,KAAK,CAAC;AAG5B,eAAO,MAAM,SAAS,YAAY,CAAC;AAEnC,eAAO,MAAM,IAAI,yBAAyB,CAAC;AAE3C,eAAO,MAAM,qBAAqB,EAAE,kBAO1B,CAAC;AAEX,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,gBAAgB,OAAO,CAAC"}
|
package/dist/src/e2ee/types.d.ts
CHANGED
@@ -65,6 +65,7 @@ export interface RatchetRequestMessage extends BaseMessage {
|
|
65
65
|
data: {
|
66
66
|
participantIdentity?: string;
|
67
67
|
keyIndex?: number;
|
68
|
+
extractable?: boolean;
|
68
69
|
};
|
69
70
|
}
|
70
71
|
export interface RatchetMessage extends BaseMessage {
|
@@ -105,6 +106,7 @@ export type KeyProviderOptions = {
|
|
105
106
|
ratchetWindowSize: number;
|
106
107
|
failureTolerance: number;
|
107
108
|
keyringSize: number;
|
109
|
+
allowKeyExtraction: boolean;
|
108
110
|
};
|
109
111
|
export type KeyInfo = {
|
110
112
|
key: CryptoKey;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/e2ee/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE;QACJ,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,QAAQ,EAAE,QAAQ,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE;QACJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,WAAW,EAAE,OAAO,CAAC;QACrB,GAAG,EAAE,SAAS,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE;QACJ,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC7B,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE;QACJ,OAAO,EAAE,UAAU,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,IAAI,EAAE;QACJ,mBAAmB,EAAE,MAAM,CAAC;QAC5B,cAAc,EAAE,cAAc,CAAC;QAC/B,cAAc,EAAE,cAAc,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,UAAU,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE;QACJ,mBAAmB,EAAE,MAAM,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE;QACJ,mBAAmB,EAAE,MAAM,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,UAAU,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE;QACJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/e2ee/types.ts"],"names":[],"mappings":"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"}
|
package/dist/src/e2ee/utils.d.ts
CHANGED
@@ -4,7 +4,7 @@ export declare function isInsertableStreamSupported(): boolean;
|
|
4
4
|
export declare function isVideoFrame(frame: RTCEncodedAudioFrame | RTCEncodedVideoFrame): frame is RTCEncodedVideoFrame;
|
5
5
|
export declare function importKey(keyBytes: Uint8Array | ArrayBuffer, algorithm?: string | {
|
6
6
|
name: string;
|
7
|
-
}, usage?: 'derive' | 'encrypt'): Promise<CryptoKey>;
|
7
|
+
}, usage?: 'derive' | 'encrypt', extractable?: boolean): Promise<CryptoKey>;
|
8
8
|
export declare function createKeyMaterialFromString(password: string): Promise<CryptoKey>;
|
9
9
|
export declare function createKeyMaterialFromBuffer(cryptoBuffer: ArrayBuffer): Promise<CryptoKey>;
|
10
10
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/e2ee/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,YAE9B;AAED,wBAAgB,0BAA0B,YAGzC;AAED,wBAAgB,2BAA2B,YAM1C;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,oBAAoB,GAAG,oBAAoB,GACjD,KAAK,IAAI,oBAAoB,CAE/B;AAED,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,UAAU,GAAG,WAAW,EAClC,SAAS,GAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAmC,EACrE,KAAK,GAAE,QAAQ,GAAG,SAAqB,
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/e2ee/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,YAE9B;AAED,wBAAgB,0BAA0B,YAGzC;AAED,wBAAgB,2BAA2B,YAM1C;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,oBAAoB,GAAG,oBAAoB,GACjD,KAAK,IAAI,oBAAoB,CAE/B;AAED,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,UAAU,GAAG,WAAW,EAClC,SAAS,GAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAmC,EACrE,KAAK,GAAE,QAAQ,GAAG,SAAqB,EACvC,WAAW,GAAE,OAAe,sBAU7B;AAED,wBAAsB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,sBAcjE;AAED,wBAAsB,2BAA2B,CAAC,YAAY,EAAE,WAAW,sBAO1E;AA0BD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM;;;GAiBjE;AAED,wBAAgB,aAAa,IAAI,UAAU,CAE1C;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAKrF;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,UAAU,WAKxD;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAoBxD;AAKD,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CAkBzD"}
|
@@ -52,9 +52,10 @@ export declare class ParticipantKeyHandler extends ParticipantKeyHandler_base {
|
|
52
52
|
* returns the ratcheted material
|
53
53
|
* if `setKey` is true (default), it will also set the ratcheted key directly on the crypto key ring
|
54
54
|
* @param keyIndex
|
55
|
-
* @param setKey
|
55
|
+
* @param setKey set the new key. Will emit KeyHandlerEvent.KeyRatcheted after key generation (default: true)
|
56
|
+
* @param extractable allow key extraction (get the key in plaintext) on the ratcheted new key (default: false)
|
56
57
|
*/
|
57
|
-
ratchetKey(keyIndex?: number, setKey?: boolean): Promise<CryptoKey>;
|
58
|
+
ratchetKey(keyIndex?: number, setKey?: boolean, extractable?: boolean): Promise<CryptoKey>;
|
58
59
|
/**
|
59
60
|
* takes in a key material with `deriveBits` and `deriveKey` set as key usages
|
60
61
|
* and derives encryption keys from the material and sets it on the key ring buffer
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ParticipantKeyHandler.d.ts","sourceRoot":"","sources":["../../../../src/e2ee/worker/ParticipantKeyHandler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,iBAAiB,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAmB,KAAK,8BAA8B,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;0CAcC,UAAU,iBAAiB,CAAC,8BAA8B,CAAC;AARvH;;;;;;;GAOG;AACH,qBAAa,qBAAsB,SAAQ,0BAA6E;IACtH,OAAO,CAAC,eAAe,CAAS;IAEhC,OAAO,CAAC,aAAa,CAA4B;IAEjD,OAAO,CAAC,uBAAuB,CAAgB;IAE/C,OAAO,CAAC,kBAAkB,CAAqB;IAE/C,OAAO,CAAC,iBAAiB,CAAkC;IAE3D,OAAO,CAAC,mBAAmB,CAAS;IAEpC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;gBAEW,mBAAmB,EAAE,MAAM,EAAE,kBAAkB,EAAE,kBAAkB;IAa/E;;;;OAIG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAO/C;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,GAAE,MAA6B,GAAG,IAAI;IAchE;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,GAAE,MAA6B,GAAG,IAAI;IAIhE;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAQvC
|
1
|
+
{"version":3,"file":"ParticipantKeyHandler.d.ts","sourceRoot":"","sources":["../../../../src/e2ee/worker/ParticipantKeyHandler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,iBAAiB,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAmB,KAAK,8BAA8B,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;0CAcC,UAAU,iBAAiB,CAAC,8BAA8B,CAAC;AARvH;;;;;;;GAOG;AACH,qBAAa,qBAAsB,SAAQ,0BAA6E;IACtH,OAAO,CAAC,eAAe,CAAS;IAEhC,OAAO,CAAC,aAAa,CAA4B;IAEjD,OAAO,CAAC,uBAAuB,CAAgB;IAE/C,OAAO,CAAC,kBAAkB,CAAqB;IAE/C,OAAO,CAAC,iBAAiB,CAAkC;IAE3D,OAAO,CAAC,mBAAmB,CAAS;IAEpC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;gBAEW,mBAAmB,EAAE,MAAM,EAAE,kBAAkB,EAAE,kBAAkB;IAa/E;;;;OAIG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAO/C;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,GAAE,MAA6B,GAAG,IAAI;IAchE;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,GAAE,MAA6B,GAAG,IAAI;IAIhE;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAQvC;;;;;;;OAOG;IACH,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,UAAO,EAAE,WAAW,UAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IA2CrF;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,SAAI;IAK9C;;;;;OAKG;IACG,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,UAAQ;IAYxF,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,UAAQ;IAQ9D,kBAAkB,CAAC,KAAK,EAAE,MAAM;IAKtC,kBAAkB;IAIlB;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM;CAG5B"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/room/track/create.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,WAAW,CAAC;AASnB;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,CAAC,EAAE,wBAAwB,EAClC,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/room/track/create.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,WAAW,CAAC;AASnB;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,CAAC,EAAE,wBAAwB,EAClC,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAoI5B;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED,wBAAsB,qBAAqB,CACzC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CA4B5B"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare function cloneDeep<T>(value: T): T
|
1
|
+
export declare function cloneDeep<T>(value: T): T;
|
2
2
|
//# sourceMappingURL=cloneDeep.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cloneDeep.d.ts","sourceRoot":"","sources":["../../../src/utils/cloneDeep.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,
|
1
|
+
{"version":3,"file":"cloneDeep.d.ts","sourceRoot":"","sources":["../../../src/utils/cloneDeep.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAUxC"}
|
@@ -65,6 +65,7 @@ export interface RatchetRequestMessage extends BaseMessage {
|
|
65
65
|
data: {
|
66
66
|
participantIdentity?: string;
|
67
67
|
keyIndex?: number;
|
68
|
+
extractable?: boolean;
|
68
69
|
};
|
69
70
|
}
|
70
71
|
export interface RatchetMessage extends BaseMessage {
|
@@ -105,6 +106,7 @@ export type KeyProviderOptions = {
|
|
105
106
|
ratchetWindowSize: number;
|
106
107
|
failureTolerance: number;
|
107
108
|
keyringSize: number;
|
109
|
+
allowKeyExtraction: boolean;
|
108
110
|
};
|
109
111
|
export type KeyInfo = {
|
110
112
|
key: CryptoKey;
|
@@ -4,7 +4,7 @@ export declare function isInsertableStreamSupported(): boolean;
|
|
4
4
|
export declare function isVideoFrame(frame: RTCEncodedAudioFrame | RTCEncodedVideoFrame): frame is RTCEncodedVideoFrame;
|
5
5
|
export declare function importKey(keyBytes: Uint8Array | ArrayBuffer, algorithm?: string | {
|
6
6
|
name: string;
|
7
|
-
}, usage?: 'derive' | 'encrypt'): Promise<CryptoKey>;
|
7
|
+
}, usage?: 'derive' | 'encrypt', extractable?: boolean): Promise<CryptoKey>;
|
8
8
|
export declare function createKeyMaterialFromString(password: string): Promise<CryptoKey>;
|
9
9
|
export declare function createKeyMaterialFromBuffer(cryptoBuffer: ArrayBuffer): Promise<CryptoKey>;
|
10
10
|
/**
|
@@ -52,9 +52,10 @@ export declare class ParticipantKeyHandler extends ParticipantKeyHandler_base {
|
|
52
52
|
* returns the ratcheted material
|
53
53
|
* if `setKey` is true (default), it will also set the ratcheted key directly on the crypto key ring
|
54
54
|
* @param keyIndex
|
55
|
-
* @param setKey
|
55
|
+
* @param setKey set the new key. Will emit KeyHandlerEvent.KeyRatcheted after key generation (default: true)
|
56
|
+
* @param extractable allow key extraction (get the key in plaintext) on the ratcheted new key (default: false)
|
56
57
|
*/
|
57
|
-
ratchetKey(keyIndex?: number, setKey?: boolean): Promise<CryptoKey>;
|
58
|
+
ratchetKey(keyIndex?: number, setKey?: boolean, extractable?: boolean): Promise<CryptoKey>;
|
58
59
|
/**
|
59
60
|
* takes in a key material with `deriveBits` and `deriveKey` set as key usages
|
60
61
|
* and derives encryption keys from the material and sets it on the key ring buffer
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare function cloneDeep<T>(value: T): T
|
1
|
+
export declare function cloneDeep<T>(value: T): T;
|
2
2
|
//# sourceMappingURL=cloneDeep.d.ts.map
|
package/package.json
CHANGED
package/src/api/utils.test.ts
CHANGED
@@ -9,6 +9,13 @@ describe('createRtcUrl', () => {
|
|
9
9
|
expect(result.toString()).toBe('wss://example.com/rtc');
|
10
10
|
});
|
11
11
|
|
12
|
+
it('should create a basic RTC URL with http protocol', () => {
|
13
|
+
const url = 'http://example.com';
|
14
|
+
const searchParams = new URLSearchParams();
|
15
|
+
const result = createRtcUrl(url, searchParams);
|
16
|
+
expect(result.toString()).toBe('ws://example.com/rtc');
|
17
|
+
});
|
18
|
+
|
12
19
|
it('should handle search parameters', () => {
|
13
20
|
const url = 'wss://example.com';
|
14
21
|
const searchParams = new URLSearchParams({
|
package/src/api/utils.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
import { toHttpUrl } from '../room/utils';
|
1
|
+
import { toHttpUrl, toWebsocketUrl } from '../room/utils';
|
2
2
|
|
3
3
|
export function createRtcUrl(url: string, searchParams: URLSearchParams) {
|
4
|
-
const urlObj = new URL(url);
|
4
|
+
const urlObj = new URL(toWebsocketUrl(url));
|
5
5
|
searchParams.forEach((value, key) => {
|
6
6
|
urlObj.searchParams.set(key, value);
|
7
7
|
});
|
package/src/e2ee/E2eeManager.ts
CHANGED
@@ -222,11 +222,19 @@ export class E2EEManager
|
|
222
222
|
keyProvider
|
223
223
|
.on(KeyProviderEvent.SetKey, (keyInfo) => this.postKey(keyInfo))
|
224
224
|
.on(KeyProviderEvent.RatchetRequest, (participantId, keyIndex) =>
|
225
|
-
this.postRatchetRequest(
|
225
|
+
this.postRatchetRequest(
|
226
|
+
participantId,
|
227
|
+
keyIndex,
|
228
|
+
keyProvider.getOptions().allowKeyExtraction,
|
229
|
+
),
|
226
230
|
);
|
227
231
|
}
|
228
232
|
|
229
|
-
private postRatchetRequest(
|
233
|
+
private postRatchetRequest(
|
234
|
+
participantIdentity?: string,
|
235
|
+
keyIndex?: number,
|
236
|
+
extractable?: boolean,
|
237
|
+
) {
|
230
238
|
if (!this.worker) {
|
231
239
|
throw Error('could not ratchet key, worker is missing');
|
232
240
|
}
|
@@ -235,6 +243,7 @@ export class E2EEManager
|
|
235
243
|
data: {
|
236
244
|
participantIdentity: participantIdentity,
|
237
245
|
keyIndex,
|
246
|
+
extractable,
|
238
247
|
},
|
239
248
|
};
|
240
249
|
this.worker.postMessage(msg);
|
package/src/e2ee/constants.ts
CHANGED
package/src/e2ee/types.ts
CHANGED
@@ -74,6 +74,7 @@ export interface RatchetRequestMessage extends BaseMessage {
|
|
74
74
|
data: {
|
75
75
|
participantIdentity?: string;
|
76
76
|
keyIndex?: number;
|
77
|
+
extractable?: boolean;
|
77
78
|
};
|
78
79
|
}
|
79
80
|
|
@@ -130,6 +131,7 @@ export type KeyProviderOptions = {
|
|
130
131
|
ratchetWindowSize: number;
|
131
132
|
failureTolerance: number;
|
132
133
|
keyringSize: number;
|
134
|
+
allowKeyExtraction: boolean;
|
133
135
|
};
|
134
136
|
|
135
137
|
export type KeyInfo = {
|
package/src/e2ee/utils.ts
CHANGED
@@ -27,13 +27,14 @@ export async function importKey(
|
|
27
27
|
keyBytes: Uint8Array | ArrayBuffer,
|
28
28
|
algorithm: string | { name: string } = { name: ENCRYPTION_ALGORITHM },
|
29
29
|
usage: 'derive' | 'encrypt' = 'encrypt',
|
30
|
+
extractable: boolean = false,
|
30
31
|
) {
|
31
32
|
// https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/importKey
|
32
33
|
return crypto.subtle.importKey(
|
33
34
|
'raw',
|
34
35
|
keyBytes,
|
35
36
|
algorithm,
|
36
|
-
|
37
|
+
extractable,
|
37
38
|
usage === 'derive' ? ['deriveBits', 'deriveKey'] : ['encrypt', 'decrypt'],
|
38
39
|
);
|
39
40
|
}
|
@@ -108,9 +108,10 @@ export class ParticipantKeyHandler extends (EventEmitter as new () => TypedEvent
|
|
108
108
|
* returns the ratcheted material
|
109
109
|
* if `setKey` is true (default), it will also set the ratcheted key directly on the crypto key ring
|
110
110
|
* @param keyIndex
|
111
|
-
* @param setKey
|
111
|
+
* @param setKey set the new key. Will emit KeyHandlerEvent.KeyRatcheted after key generation (default: true)
|
112
|
+
* @param extractable allow key extraction (get the key in plaintext) on the ratcheted new key (default: false)
|
112
113
|
*/
|
113
|
-
ratchetKey(keyIndex?: number, setKey = true): Promise<CryptoKey> {
|
114
|
+
ratchetKey(keyIndex?: number, setKey = true, extractable = false): Promise<CryptoKey> {
|
114
115
|
const currentKeyIndex = keyIndex ?? this.getCurrentKeyIndex();
|
115
116
|
|
116
117
|
const existingPromise = this.ratchetPromiseMap.get(currentKeyIndex);
|
@@ -130,6 +131,7 @@ export class ParticipantKeyHandler extends (EventEmitter as new () => TypedEvent
|
|
130
131
|
await ratchet(currentMaterial, this.keyProviderOptions.ratchetSalt),
|
131
132
|
currentMaterial.algorithm.name,
|
132
133
|
'derive',
|
134
|
+
extractable,
|
133
135
|
);
|
134
136
|
|
135
137
|
if (setKey) {
|
@@ -119,11 +119,11 @@ onmessage = (ev) => {
|
|
119
119
|
async function handleRatchetRequest(data: RatchetRequestMessage['data']) {
|
120
120
|
if (useSharedKey) {
|
121
121
|
const keyHandler = getSharedKeyHandler();
|
122
|
-
await keyHandler.ratchetKey(data.keyIndex);
|
122
|
+
await keyHandler.ratchetKey(data.keyIndex, true, data.extractable);
|
123
123
|
keyHandler.resetKeyStatus();
|
124
124
|
} else if (data.participantIdentity) {
|
125
125
|
const keyHandler = getParticipantKeyHandler(data.participantIdentity);
|
126
|
-
await keyHandler.ratchetKey(data.keyIndex);
|
126
|
+
await keyHandler.ratchetKey(data.keyIndex, true, data.extractable);
|
127
127
|
keyHandler.resetKeyStatus();
|
128
128
|
} else {
|
129
129
|
workerLogger.error(
|
package/src/room/track/create.ts
CHANGED
@@ -32,14 +32,28 @@ export async function createLocalTracks(
|
|
32
32
|
options?: CreateLocalTracksOptions,
|
33
33
|
loggerOptions?: LoggerOptions,
|
34
34
|
): Promise<Array<LocalTrack>> {
|
35
|
-
|
36
|
-
const internalOptions = { ...(options ?? {}) };
|
35
|
+
options ??= {};
|
37
36
|
let attemptExactMatch = false;
|
38
|
-
|
39
|
-
|
37
|
+
|
38
|
+
const {
|
39
|
+
audioProcessor,
|
40
|
+
videoProcessor,
|
41
|
+
optionsWithoutProcessor: internalOptions,
|
42
|
+
} = extractProcessorsFromOptions(options);
|
43
|
+
|
44
|
+
let retryAudioOptions: AudioCaptureOptions | undefined | boolean = internalOptions.audio;
|
45
|
+
let retryVideoOptions: VideoCaptureOptions | undefined | boolean = internalOptions.video;
|
46
|
+
|
47
|
+
if (audioProcessor && typeof internalOptions.audio === 'object') {
|
48
|
+
internalOptions.audio.processor = audioProcessor;
|
49
|
+
}
|
50
|
+
if (videoProcessor && typeof internalOptions.video === 'object') {
|
51
|
+
internalOptions.video.processor = videoProcessor;
|
52
|
+
}
|
53
|
+
|
40
54
|
// if the user passes a device id as a string, we default to exact match
|
41
55
|
if (
|
42
|
-
|
56
|
+
options.audio &&
|
43
57
|
typeof internalOptions.audio === 'object' &&
|
44
58
|
typeof internalOptions.audio.deviceId === 'string'
|
45
59
|
) {
|
@@ -77,7 +91,6 @@ export async function createLocalTracks(
|
|
77
91
|
) {
|
78
92
|
internalOptions.video = { deviceId: 'default' };
|
79
93
|
}
|
80
|
-
const { audioProcessor, videoProcessor } = extractProcessorsFromOptions(internalOptions);
|
81
94
|
const opts = mergeDefaultOptions(internalOptions, audioDefaults, videoDefaults);
|
82
95
|
const constraints = constraintsForOptions(opts);
|
83
96
|
|
@@ -161,7 +174,7 @@ export async function createLocalVideoTrack(
|
|
161
174
|
): Promise<LocalVideoTrack> {
|
162
175
|
const tracks = await createLocalTracks({
|
163
176
|
audio: false,
|
164
|
-
video: options,
|
177
|
+
video: options ?? true,
|
165
178
|
});
|
166
179
|
return <LocalVideoTrack>tracks[0];
|
167
180
|
}
|
@@ -170,7 +183,7 @@ export async function createLocalAudioTrack(
|
|
170
183
|
options?: AudioCaptureOptions,
|
171
184
|
): Promise<LocalAudioTrack> {
|
172
185
|
const tracks = await createLocalTracks({
|
173
|
-
audio: options,
|
186
|
+
audio: options ?? true,
|
174
187
|
video: false,
|
175
188
|
});
|
176
189
|
return <LocalAudioTrack>tracks[0];
|
package/src/room/track/utils.ts
CHANGED
@@ -23,7 +23,7 @@ export function mergeDefaultOptions(
|
|
23
23
|
);
|
24
24
|
const defaultAudioProcessor = audioDefaults?.processor;
|
25
25
|
const defaultVideoProcessor = videoDefaults?.processor;
|
26
|
-
const clonedOptions: CreateLocalTracksOptions =
|
26
|
+
const clonedOptions: CreateLocalTracksOptions = optionsWithoutProcessor ?? {};
|
27
27
|
if (clonedOptions.audio === true) clonedOptions.audio = {};
|
28
28
|
if (clonedOptions.video === true) clonedOptions.video = {};
|
29
29
|
|
@@ -312,7 +312,7 @@ export function extractProcessorsFromOptions(options: CreateLocalTracksOptions)
|
|
312
312
|
newOptions.video = { ...newOptions.video, processor: undefined };
|
313
313
|
}
|
314
314
|
|
315
|
-
return { audioProcessor, videoProcessor, optionsWithoutProcessor: newOptions };
|
315
|
+
return { audioProcessor, videoProcessor, optionsWithoutProcessor: cloneDeep(newOptions) };
|
316
316
|
}
|
317
317
|
|
318
318
|
export function getTrackSourceFromProto(source: TrackSource): Track.Source {
|
package/src/utils/cloneDeep.ts
CHANGED