livekit-client 2.11.2 → 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 +38 -23
- 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 +19 -6
- package/src/room/track/utils.ts +2 -2
- package/src/utils/cloneDeep.ts +2 -2
@@ -482,7 +482,8 @@ const KEY_PROVIDER_DEFAULTS = {
|
|
482
482
|
ratchetSalt: SALT,
|
483
483
|
ratchetWindowSize: 8,
|
484
484
|
failureTolerance: DECRYPTION_FAILURE_TOLERANCE,
|
485
|
-
keyringSize: 16
|
485
|
+
keyringSize: 16,
|
486
|
+
allowKeyExtraction: false
|
486
487
|
};
|
487
488
|
const MAX_SIF_COUNT = 100;
|
488
489
|
const MAX_SIF_DURATION = 2000;
|
@@ -962,9 +963,10 @@ function importKey(keyBytes_1) {
|
|
962
963
|
name: ENCRYPTION_ALGORITHM
|
963
964
|
};
|
964
965
|
let usage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'encrypt';
|
966
|
+
let extractable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
965
967
|
return function* () {
|
966
968
|
// https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/importKey
|
967
|
-
return crypto.subtle.importKey('raw', keyBytes, algorithm,
|
969
|
+
return crypto.subtle.importKey('raw', keyBytes, algorithm, extractable, usage === 'derive' ? ['deriveBits', 'deriveKey'] : ['encrypt', 'decrypt']);
|
968
970
|
}();
|
969
971
|
});
|
970
972
|
}
|
@@ -1718,10 +1720,12 @@ class ParticipantKeyHandler extends eventsExports.EventEmitter {
|
|
1718
1720
|
* returns the ratcheted material
|
1719
1721
|
* if `setKey` is true (default), it will also set the ratcheted key directly on the crypto key ring
|
1720
1722
|
* @param keyIndex
|
1721
|
-
* @param setKey
|
1723
|
+
* @param setKey set the new key. Will emit KeyHandlerEvent.KeyRatcheted after key generation (default: true)
|
1724
|
+
* @param extractable allow key extraction (get the key in plaintext) on the ratcheted new key (default: false)
|
1722
1725
|
*/
|
1723
1726
|
ratchetKey(keyIndex) {
|
1724
1727
|
let setKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
1728
|
+
let extractable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
1725
1729
|
const currentKeyIndex = keyIndex !== null && keyIndex !== void 0 ? keyIndex : this.getCurrentKeyIndex();
|
1726
1730
|
const existingPromise = this.ratchetPromiseMap.get(currentKeyIndex);
|
1727
1731
|
if (typeof existingPromise !== 'undefined') {
|
@@ -1734,7 +1738,7 @@ class ParticipantKeyHandler extends eventsExports.EventEmitter {
|
|
1734
1738
|
throw new TypeError("Cannot ratchet key without a valid keyset of participant ".concat(this.participantIdentity));
|
1735
1739
|
}
|
1736
1740
|
const currentMaterial = keySet.material;
|
1737
|
-
const newMaterial = yield importKey(yield ratchet(currentMaterial, this.keyProviderOptions.ratchetSalt), currentMaterial.algorithm.name, 'derive');
|
1741
|
+
const newMaterial = yield importKey(yield ratchet(currentMaterial, this.keyProviderOptions.ratchetSalt), currentMaterial.algorithm.name, 'derive', extractable);
|
1738
1742
|
if (setKey) {
|
1739
1743
|
yield this.setKeyFromMaterial(newMaterial, currentKeyIndex, true);
|
1740
1744
|
this.emit(KeyHandlerEvent.KeyRatcheted, newMaterial, this.participantIdentity, currentKeyIndex);
|
@@ -1897,11 +1901,11 @@ function handleRatchetRequest(data) {
|
|
1897
1901
|
return __awaiter(this, void 0, void 0, function* () {
|
1898
1902
|
if (useSharedKey) {
|
1899
1903
|
const keyHandler = getSharedKeyHandler();
|
1900
|
-
yield keyHandler.ratchetKey(data.keyIndex);
|
1904
|
+
yield keyHandler.ratchetKey(data.keyIndex, true, data.extractable);
|
1901
1905
|
keyHandler.resetKeyStatus();
|
1902
1906
|
} else if (data.participantIdentity) {
|
1903
1907
|
const keyHandler = getParticipantKeyHandler(data.participantIdentity);
|
1904
|
-
yield keyHandler.ratchetKey(data.keyIndex);
|
1908
|
+
yield keyHandler.ratchetKey(data.keyIndex, true, data.extractable);
|
1905
1909
|
keyHandler.resetKeyStatus();
|
1906
1910
|
} else {
|
1907
1911
|
workerLogger.error('no participant Id was provided for ratchet request and shared key usage is disabled');
|