From 0565a30de7f9ad0898bbe2dd9949d2bf3437f32f Mon Sep 17 00:00:00 2001 From: youenn Date: Fri, 14 Nov 2025 22:48:35 +0900 Subject: [PATCH 01/22] Add decryption/encryption dedicated APIs --- index.bs | 52 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/index.bs b/index.bs index c2c666c..79ce2fa 100644 --- a/index.bs +++ b/index.bs @@ -226,11 +226,17 @@ dictionary SFrameTransformOptions { typedef [EnforceRange] unsigned long long SmallCryptoKeyID; typedef (SmallCryptoKeyID or bigint) CryptoKeyID; -interface mixin SFrameKeyManagement { +interface mixin SFrameEncrypterManagement { Promise setEncryptionKey(CryptoKey key, optional CryptoKeyID keyID); attribute EventHandler onerror; }; +interface mixin SFrameDecrypterManagement { + Promise addDecryptionKey(CryptoKey key, CryptoKeyID keyID); + Promise removeDecryptionKey(CryptoKeyID keyID); + attribute EventHandler onerror; +}; + [Exposed=Window] interface SFrameTransform : EventTarget { constructor(optional SFrameTransformOptions options = {}); @@ -242,14 +248,14 @@ interface SFrameEncrypterStream : EventTarget { constructor(optional SFrameTransformOptions options = {}); }; SFrameEncrypterStream includes GenericTransformStream; -SFrameEncrypterStream includes SFrameKeyManagement; +SFrameEncrypterStream includes SFrameEncrypterManagement; [Exposed=(Window,DedicatedWorker)] interface SFrameDecrypterStream : EventTarget { constructor(optional SFrameTransformOptions options = {}); }; SFrameDecrypterStream includes GenericTransformStream; -SFrameDecrypterStream includes SFrameKeyManagement; +SFrameDecrypterStream includes SFrameDecrypterManagement; enum SFrameTransformErrorEventType { "authentication", @@ -324,14 +330,40 @@ The SFrame transform algorithm, given |this| and |frame|, runs these 1. [=ReadableStream/Enqueue=] |frame| in |this|.`[[transform]]`. ## Methods ## {#sframe-transform-methods} -The setEncryptionKey(|key|, |keyID|) method steps are: +The setEncryptionKey(|key|, |keyID|) method steps are: +1. Let |promise| be [=a new promise=]. +1. If |keyId| is undefined, run the following steps: + 1. Let |currentKeyId| be |this|.`[[currentKeyId]]` if not undefined or 0 otherwise. + 1. If |currentKeyId| is greater or equal to 264-1, [=reject=] |promise| with a {{RangeError}} exception and abort these steps. + 1. Set |keyId| to |currentKeyId| incremented by 1. +1. If |keyID| is a {{bigint}} which cannot be represented as a integer between 0 and 264-1 inclusive, [=reject=] |promise| with a {{RangeError}} exception and abort these steps. +1. Set |this|.`[[currentKeyId]]` to |keyId|. +1. [=In parallel=], run the following steps: + 1. Set |key| and |keyID| as key material to use for the SFrame transform encryption algorithm, as defined by [[RFC9605]]. + 1. If setting the key material fails, [=queue a task=] to [=reject=] |promise| with an {{InvalidModificationError}} exception and abort these steps. + 1. [=Queue a task=] to [=resolve=] |promise| with undefined. +1. Return |promise|. + +The addEncryptionKey(|key|, |keyID|) method steps are: 1. Let |promise| be [=a new promise=]. -2. If |keyID| is a {{bigint}} which cannot be represented as a integer between 0 and 264-1 inclusive, [=reject=] |promise| with a {{RangeError}} exception. -3. Otherwise, [=in parallel=], run the following steps: - 1. Set |key| with its optional |keyID| as key material to use for the SFrame transform algorithm, as defined by [[RFC9605]]. - 2. If setting the key material fails, [=reject=] |promise| with an {{InvalidModificationError}} exception and abort these steps. - 3. [=Resolve=] |promise| with undefined. -4. Return |promise|. +1. If |keyID| is a {{bigint}} which cannot be represented as a integer between 0 and 264-1 inclusive, [=reject=] |promise| with a {{RangeError}} exception, and abort these steps.. +1. [=In parallel=], run the following steps: + 1. Let |keyStore| be the key store used for the SFrame transform algorithm, as defined by [[RFC9605]]. + 1. Set an entry to |keyStore| with |keyId| as key and |keyValue| as value. This overrides any existing entry to |keyId|. + 1. If setting the key material fails, [=queue a task=] to [=reject=] |promise| with an {{InvalidModificationError}} exception and abort these steps. + 1. [=Resolve=] |promise| with undefined. +1. Return |promise|. + +// FIXME: Should SFrameTransform receiver be made aware of the current key in use, so that it would call removeEncryptionKey appropriately. +// Or should we add an option to let the UA remove the key automatically on new KeyID? +The removeEncryptionKey(|key|, |keyID|) method steps are: +1. Let |promise| be [=a new promise=]. +1. If |keyID| is a {{bigint}} which cannot be represented as a integer between 0 and 264-1 inclusive, [=reject=] |promise| with a {{RangeError}} exception, and abort these steps. +1. [=In parallel=], run the following steps: + 1. Let |keyStore| be the key store used for the SFrame transform algorithm, as defined by [[RFC9605]]. + 1. Remove the entry of |keyStore| at |keyId| if it exits. + 1. [=Resolve=] |promise| with undefined. +1. Return |promise|. # Script Transform # {#scriptTransform} From 4867772240f5696382a99facd32449d96d51335c Mon Sep 17 00:00:00 2001 From: youenn Date: Tue, 18 Nov 2025 07:48:32 +0100 Subject: [PATCH 02/22] Introduce sender and receiver transforms --- index.bs | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/index.bs b/index.bs index 79ce2fa..4758da5 100644 --- a/index.bs +++ b/index.bs @@ -81,15 +81,16 @@ It uses an additional API on {{RTCRtpSender}} and {{RTCRtpReceiver}} to insert the processing into the pipeline.
-typedef (SFrameTransform or RTCRtpScriptTransform) RTCRtpTransform;
+typedef (SFrameSenderTransform or RTCRtpScriptTransform) RTCRtpSenderTransform;
+typedef (SFrameReceiverTransform or RTCRtpScriptTransform) RTCRtpReceierTransform;
 
 // New methods for RTCRtpSender and RTCRtpReceiver
 partial interface RTCRtpSender {
-    attribute RTCRtpTransform? transform;
+    attribute RTCRtpSenderTransform? transform;
 };
 
 partial interface RTCRtpReceiver {
-    attribute RTCRtpTransform? transform;
+    attribute RTCRtpReceiverTransform? transform;
 };
 
@@ -203,7 +204,7 @@ There is no guarantee on which frame will happen the switch from the previous tr If a web application sets the transform synchronously at creation of the {{RTCRtpSender}} (for instance when calling addTrack), the transform will receive the first frame generated by the {{RTCRtpSender}}'s encoder. Similarly, if a web application sets the transform synchronously at creation of the {{RTCRtpReceiver}} (for instance when calling addTrack, or at track event handler), the transform will receive the first full frame generated by the {{RTCRtpReceiver}}'s packetizer. -# SFrameTransform # {#sframe} +# SFrame transforms # {#sframe}

The APIs presented in this section allow applications to process SFrame data using specific cipher suites defined in [[RFC9605]]. @@ -238,10 +239,16 @@ interface mixin SFrameDecrypterManagement { }; [Exposed=Window] -interface SFrameTransform : EventTarget { +interface SFrameSenderTransform { constructor(optional SFrameTransformOptions options = {}); }; -SFrameTransform includes SFrameKeyManagement; +SFrameSenderTransform includes SFrameEncrypterKeyManagement; + +[Exposed=Window] +interface SFrameReceiverTransform : EventTarget { + constructor(optional SFrameTransformOptions options = {}); +}; +SFrameReceiverTransform includes SFrameDecrypterKeyManagement; [Exposed=(Window,DedicatedWorker)] interface SFrameEncrypterStream : EventTarget { @@ -279,9 +286,15 @@ dictionary SFrameTransformErrorEventInit : EventInit { }; -The new SFrameTransform(options) constructor steps are: +The new SFrameSenderTransform(options) constructor steps are: 1. Let |options| be the method's first argument. 1. Run the [=SFrame initialization algorithm=] with |this| and |options|. +1. Set |this|.`[[role]]` to 'encrypt'. + +The new SFrameReceiverTransform(options) constructor steps are: +1. Let |options| be the method's first argument. +1. Run the [=SFrame initialization algorithm=] with |this| and |options|. +1. Set |this|.`[[role]]` to 'decrypt'. The new SFrameEncrypterStream(options) constructor steps are: 1. Let |options| be the method's first argument. From 25562b2732e5a2eb870f6692e7ef6c5ade5b7cad Mon Sep 17 00:00:00 2001 From: youennf Date: Thu, 20 Nov 2025 16:37:48 +0100 Subject: [PATCH 03/22] Apply suggestions from code review Removing fixme in favour of https://github.com/w3c/webrtc-encoded-transform/issues/289 --- index.bs | 2 -- 1 file changed, 2 deletions(-) diff --git a/index.bs b/index.bs index 4758da5..9368ea5 100644 --- a/index.bs +++ b/index.bs @@ -367,8 +367,6 @@ The addEncryptionKey(|key|, |keyID|) 1. [=Resolve=] |promise| with undefined. 1. Return |promise|. -// FIXME: Should SFrameTransform receiver be made aware of the current key in use, so that it would call removeEncryptionKey appropriately. -// Or should we add an option to let the UA remove the key automatically on new KeyID? The removeEncryptionKey(|key|, |keyID|) method steps are: 1. Let |promise| be [=a new promise=]. 1. If |keyID| is a {{bigint}} which cannot be represented as a integer between 0 and 264-1 inclusive, [=reject=] |promise| with a {{RangeError}} exception, and abort these steps. From 226007d8801bc9f960bf95378e84d00be6f8f46a Mon Sep 17 00:00:00 2001 From: youennf Date: Thu, 20 Nov 2025 16:38:10 +0100 Subject: [PATCH 04/22] Update index.bs --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index 9368ea5..09d7069 100644 --- a/index.bs +++ b/index.bs @@ -82,7 +82,7 @@ insert the processing into the pipeline.

 typedef (SFrameSenderTransform or RTCRtpScriptTransform) RTCRtpSenderTransform;
-typedef (SFrameReceiverTransform or RTCRtpScriptTransform) RTCRtpReceierTransform;
+typedef (SFrameReceiverTransform or RTCRtpScriptTransform) RTCRtpReceiverTransform;
 
 // New methods for RTCRtpSender and RTCRtpReceiver
 partial interface RTCRtpSender {

From 68c323b88d200f71691a7f8ddac3ee3fe193abd1 Mon Sep 17 00:00:00 2001
From: youennf 
Date: Wed, 17 Dec 2025 16:39:28 +0100
Subject: [PATCH 05/22] Update index.bs

Co-authored-by: Jan-Ivar Bruaroey 
---
 index.bs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.bs b/index.bs
index 09d7069..444f494 100644
--- a/index.bs
+++ b/index.bs
@@ -352,7 +352,7 @@ The setEncryptionKey(|key|, |keyID|)
 1. If |keyID| is a {{bigint}} which cannot be represented as a integer between 0 and 264-1 inclusive, [=reject=] |promise| with a {{RangeError}} exception and abort these steps.
 1.  Set |this|.`[[currentKeyId]]` to |keyId|.
 1. [=In parallel=], run the following steps:
-    1. Set |key| and |keyID| as key material to use for the SFrame transform encryption algorithm, as defined by [[RFC9605]].
+    1. Set the SFrame transform encryption algorithm's key material to |key| and |keyID|, as defined by [[RFC9605]].
     1. If setting the key material fails, [=queue a task=] to [=reject=] |promise| with an {{InvalidModificationError}} exception and abort these steps.
     1. [=Queue a task=] to [=resolve=] |promise| with undefined.
 1. Return |promise|.

From d733f5f57e988f9c0784679f1f9d71d946559afe Mon Sep 17 00:00:00 2001
From: youennf 
Date: Wed, 17 Dec 2025 16:39:53 +0100
Subject: [PATCH 06/22] Update index.bs

Co-authored-by: Jan-Ivar Bruaroey 
---
 index.bs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.bs b/index.bs
index 444f494..e2b102e 100644
--- a/index.bs
+++ b/index.bs
@@ -357,7 +357,7 @@ The setEncryptionKey(|key|, |keyID|)
     1. [=Queue a task=] to [=resolve=] |promise| with undefined.
 1. Return |promise|.
 
-The addEncryptionKey(|key|, |keyID|) method steps are:
+The addDecryptionKey(|key|, |keyID|) method steps are:
 1. Let |promise| be [=a new promise=].
 1. If |keyID| is a {{bigint}} which cannot be represented as a integer between 0 and 264-1 inclusive, [=reject=] |promise| with a {{RangeError}} exception, and abort these steps..
 1. [=In parallel=], run the following steps:

From 8594e5dbe15982e5d7e661ca96527fa8d48651d1 Mon Sep 17 00:00:00 2001
From: youennf 
Date: Wed, 17 Dec 2025 16:40:04 +0100
Subject: [PATCH 07/22] Update index.bs

Co-authored-by: Jan-Ivar Bruaroey 
---
 index.bs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.bs b/index.bs
index e2b102e..349bf34 100644
--- a/index.bs
+++ b/index.bs
@@ -367,7 +367,7 @@ The addDecryptionKey(|key|, |keyID|)
     1. [=Resolve=] |promise| with undefined.
 1. Return |promise|.
 
-The removeEncryptionKey(|key|, |keyID|) method steps are:
+The removeDecryptionKey(|key|, |keyID|) method steps are:
 1. Let |promise| be [=a new promise=].
 1. If |keyID| is a {{bigint}} which cannot be represented as a integer between 0 and 264-1 inclusive, [=reject=] |promise| with a {{RangeError}} exception, and abort these steps.
 1. [=In parallel=], run the following steps:

From b5097afb242a48055b9ab2a536513f835a11cf67 Mon Sep 17 00:00:00 2001
From: Youenn Fablet 
Date: Wed, 17 Dec 2025 16:47:32 +0100
Subject: [PATCH 08/22] Reuse infra map set

---
 index.bs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.bs b/index.bs
index 349bf34..d78fb3a 100644
--- a/index.bs
+++ b/index.bs
@@ -362,7 +362,7 @@ The addDecryptionKey(|key|, |keyID|)
 1. If |keyID| is a {{bigint}} which cannot be represented as a integer between 0 and 264-1 inclusive, [=reject=] |promise| with a {{RangeError}} exception, and abort these steps..
 1. [=In parallel=], run the following steps:
     1. Let |keyStore| be the key store used for the SFrame transform algorithm, as defined by [[RFC9605]].
-    1. Set an entry to |keyStore| with |keyId| as key and |keyValue| as value. This overrides any existing entry to |keyId|.
+    1. [=map/set|Set=] |keyStore|[|keyId|] to |keyValue|.
     1. If setting the key material fails, [=queue a task=] to [=reject=] |promise| with an {{InvalidModificationError}} exception and abort these steps.
     1. [=Resolve=] |promise| with undefined.
 1. Return |promise|.

From f842e489c15ec1908682e0d24e6433ca4a666836 Mon Sep 17 00:00:00 2001
From: Youenn Fablet 
Date: Wed, 17 Dec 2025 16:49:08 +0100
Subject: [PATCH 09/22] Fix bikeshed link

---
 index.bs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/index.bs b/index.bs
index d78fb3a..2accfe7 100644
--- a/index.bs
+++ b/index.bs
@@ -242,13 +242,13 @@ interface mixin SFrameDecrypterManagement {
 interface SFrameSenderTransform {
     constructor(optional SFrameTransformOptions options = {});
 };
-SFrameSenderTransform includes SFrameEncrypterKeyManagement;
+SFrameSenderTransform includes SFrameEncrypterManagement;
 
 [Exposed=Window]
 interface SFrameReceiverTransform : EventTarget {
     constructor(optional SFrameTransformOptions options = {});
 };
-SFrameReceiverTransform includes SFrameDecrypterKeyManagement;
+SFrameReceiverTransform includes SFrameDecrypterManagement;
 
 [Exposed=(Window,DedicatedWorker)]
 interface SFrameEncrypterStream : EventTarget {

From 58262cec76eeac50242a64b6e3e35d2b9aa7da91 Mon Sep 17 00:00:00 2001
From: Youenn Fablet 
Date: Wed, 17 Dec 2025 16:54:42 +0100
Subject: [PATCH 10/22] Fix video frame type

---
 index.bs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/index.bs b/index.bs
index 2accfe7..9499026 100644
--- a/index.bs
+++ b/index.bs
@@ -571,7 +571,7 @@ interface RTCEncodedVideoFrame {
 ### Members ### {#RTCEncodedVideoFrame-members}
 
- type RTCEncodedVideoFrameType + type EncodedVideoChunkType

@@ -1130,7 +1130,7 @@ The generate key frame algorithm, given |promise|, |frame For any [=encoder=] associated with an {{RTCRtpScriptTransformer}} |transformer|, the user agent MUST run the following steps just before any |frame| is [=ReadableStream/enqueued=] into |transformer|.{{[[readable]]}}: 1. Let |encoder| be |transformer|.{{[[frameSource]]}}. 1. If |encoder|.`[[pendingKeyFrameTasks]]` is undefined, abort these steps. -1. If |frame| is not a video {{RTCEncodedVideoFrameType/"key"}} frame, abort these steps. +1. If |frame| is not a video {{EncodedVideoChunkType/"key"}} frame, abort these steps. 1. For each |task| in |encoder|.`[[pendingKeyFrameTasks]]`, run the following steps: 1. If |frame| was generated for a layer [=list/contained=] in |task|.`[[layers]]`, then run the following steps: From c94cbd34efab426849031fea5f65ee515785df85 Mon Sep 17 00:00:00 2001 From: youennf Date: Thu, 18 Dec 2025 16:35:35 +0100 Subject: [PATCH 11/22] Update index.bs --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index 9499026..9204273 100644 --- a/index.bs +++ b/index.bs @@ -364,7 +364,7 @@ The addDecryptionKey(|key|, |keyID|) 1. Let |keyStore| be the key store used for the SFrame transform algorithm, as defined by [[RFC9605]]. 1. [=map/set|Set=] |keyStore|[|keyId|] to |keyValue|. 1. If setting the key material fails, [=queue a task=] to [=reject=] |promise| with an {{InvalidModificationError}} exception and abort these steps. - 1. [=Resolve=] |promise| with undefined. + 1. [=Queue a task=] to [=resolve=] |promise| with undefined. 1. Return |promise|. The removeDecryptionKey(|key|, |keyID|) method steps are: From eeefa7aac8418b559469c7e8659ee0887c02227c Mon Sep 17 00:00:00 2001 From: youennf Date: Thu, 18 Dec 2025 16:36:08 +0100 Subject: [PATCH 12/22] Update index.bs --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index 9204273..13bb07e 100644 --- a/index.bs +++ b/index.bs @@ -373,7 +373,7 @@ The removeDecryptionKey(|key|, |keyI 1. [=In parallel=], run the following steps: 1. Let |keyStore| be the key store used for the SFrame transform algorithm, as defined by [[RFC9605]]. 1. Remove the entry of |keyStore| at |keyId| if it exits. - 1. [=Resolve=] |promise| with undefined. + 1. [=Queue a task=] to [=resolve=] |promise| with undefined. 1. Return |promise|. From de082cd2f29a5c708ff307a95086e937e07c729b Mon Sep 17 00:00:00 2001 From: youennf Date: Thu, 18 Dec 2025 16:38:51 +0100 Subject: [PATCH 13/22] Update index.bs --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index 13bb07e..ca6c14b 100644 --- a/index.bs +++ b/index.bs @@ -359,7 +359,7 @@ The setEncryptionKey(|key|, |keyID|) The addDecryptionKey(|key|, |keyID|) method steps are: 1. Let |promise| be [=a new promise=]. -1. If |keyID| is a {{bigint}} which cannot be represented as a integer between 0 and 264-1 inclusive, [=reject=] |promise| with a {{RangeError}} exception, and abort these steps.. +1. If |keyID| is a {{bigint}} which cannot be represented as a integer between 0 and 264-1 inclusive, [=reject=] |promise| with a {{RangeError}} exception, and abort these steps. 1. [=In parallel=], run the following steps: 1. Let |keyStore| be the key store used for the SFrame transform algorithm, as defined by [[RFC9605]]. 1. [=map/set|Set=] |keyStore|[|keyId|] to |keyValue|. From 45d2d9b9dc3e7e61b72cc6a6a76ede75bf5ca661 Mon Sep 17 00:00:00 2001 From: youennf Date: Thu, 18 Dec 2025 16:40:16 +0100 Subject: [PATCH 14/22] Update index.bs --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index ca6c14b..bb2889d 100644 --- a/index.bs +++ b/index.bs @@ -234,7 +234,7 @@ interface mixin SFrameEncrypterManagement { interface mixin SFrameDecrypterManagement { Promise addDecryptionKey(CryptoKey key, CryptoKeyID keyID); - Promise removeDecryptionKey(CryptoKeyID keyID); + Promise removeDecryptionKey(CryptoKeyID keyId); attribute EventHandler onerror; }; From 647e642597da4fa7f010c86d62c00751d72c38a5 Mon Sep 17 00:00:00 2001 From: youennf Date: Thu, 18 Dec 2025 16:40:25 +0100 Subject: [PATCH 15/22] Update index.bs --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index bb2889d..3b5cd6a 100644 --- a/index.bs +++ b/index.bs @@ -228,7 +228,7 @@ typedef [EnforceRange] unsigned long long SmallCryptoKeyID; typedef (SmallCryptoKeyID or bigint) CryptoKeyID; interface mixin SFrameEncrypterManagement { - Promise setEncryptionKey(CryptoKey key, optional CryptoKeyID keyID); + Promise setEncryptionKey(CryptoKey key, optional CryptoKeyID keyId); attribute EventHandler onerror; }; From f8b612b55d53bbbed529f1fc9887867e19257c4c Mon Sep 17 00:00:00 2001 From: youennf Date: Thu, 18 Dec 2025 16:40:35 +0100 Subject: [PATCH 16/22] Update index.bs --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index 3b5cd6a..1d71a0f 100644 --- a/index.bs +++ b/index.bs @@ -233,7 +233,7 @@ interface mixin SFrameEncrypterManagement { }; interface mixin SFrameDecrypterManagement { - Promise addDecryptionKey(CryptoKey key, CryptoKeyID keyID); + Promise addDecryptionKey(CryptoKey key, CryptoKeyID keyId); Promise removeDecryptionKey(CryptoKeyID keyId); attribute EventHandler onerror; }; From caae168f0bf0a704d4406b820f74c02590fb164f Mon Sep 17 00:00:00 2001 From: youennf Date: Thu, 18 Dec 2025 16:45:03 +0100 Subject: [PATCH 17/22] Update index.bs --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index 1d71a0f..cacbdfb 100644 --- a/index.bs +++ b/index.bs @@ -232,7 +232,7 @@ interface mixin SFrameEncrypterManagement { attribute EventHandler onerror; }; -interface mixin SFrameDecrypterManagement { +interface mixin SFrameDecrypterManager { Promise addDecryptionKey(CryptoKey key, CryptoKeyID keyId); Promise removeDecryptionKey(CryptoKeyID keyId); attribute EventHandler onerror; From 58f13e17e1d6c99552af754ed6bad2f6c178a8db Mon Sep 17 00:00:00 2001 From: youennf Date: Thu, 18 Dec 2025 16:45:16 +0100 Subject: [PATCH 18/22] Update index.bs --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index cacbdfb..14df25e 100644 --- a/index.bs +++ b/index.bs @@ -227,7 +227,7 @@ dictionary SFrameTransformOptions { typedef [EnforceRange] unsigned long long SmallCryptoKeyID; typedef (SmallCryptoKeyID or bigint) CryptoKeyID; -interface mixin SFrameEncrypterManagement { +interface mixin SFrameEncrypterManager { Promise setEncryptionKey(CryptoKey key, optional CryptoKeyID keyId); attribute EventHandler onerror; }; From f8361b5ef06039e0e54a5fbeabaf86885511145d Mon Sep 17 00:00:00 2001 From: youennf Date: Thu, 18 Dec 2025 16:46:19 +0100 Subject: [PATCH 19/22] Update index.bs --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index 14df25e..c1e53e5 100644 --- a/index.bs +++ b/index.bs @@ -248,7 +248,7 @@ SFrameSenderTransform includes SFrameEncrypterManagement; interface SFrameReceiverTransform : EventTarget { constructor(optional SFrameTransformOptions options = {}); }; -SFrameReceiverTransform includes SFrameDecrypterManagement; +SFrameReceiverTransform includes SFrameDecrypterManager; [Exposed=(Window,DedicatedWorker)] interface SFrameEncrypterStream : EventTarget { From a036914d0ff62e9ba679e272e34230eca7cdd07a Mon Sep 17 00:00:00 2001 From: youennf Date: Thu, 18 Dec 2025 16:46:53 +0100 Subject: [PATCH 20/22] Update index.bs --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index c1e53e5..f7de605 100644 --- a/index.bs +++ b/index.bs @@ -242,7 +242,7 @@ interface mixin SFrameDecrypterManager { interface SFrameSenderTransform { constructor(optional SFrameTransformOptions options = {}); }; -SFrameSenderTransform includes SFrameEncrypterManagement; +SFrameSenderTransform includes SFrameEncrypterManager; [Exposed=Window] interface SFrameReceiverTransform : EventTarget { From fcaf724403dd88ee08a6963b7b3e7db4d94c46fb Mon Sep 17 00:00:00 2001 From: youennf Date: Thu, 18 Dec 2025 16:47:25 +0100 Subject: [PATCH 21/22] Update index.bs --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index f7de605..03951b4 100644 --- a/index.bs +++ b/index.bs @@ -255,7 +255,7 @@ interface SFrameEncrypterStream : EventTarget { constructor(optional SFrameTransformOptions options = {}); }; SFrameEncrypterStream includes GenericTransformStream; -SFrameEncrypterStream includes SFrameEncrypterManagement; +SFrameEncrypterStream includes SFrameEncrypterManager; [Exposed=(Window,DedicatedWorker)] interface SFrameDecrypterStream : EventTarget { From 3f5bff22223bf88625880c4af7c62a0e0e382eaf Mon Sep 17 00:00:00 2001 From: youennf Date: Thu, 18 Dec 2025 16:47:55 +0100 Subject: [PATCH 22/22] Update index.bs --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index 03951b4..84f37b6 100644 --- a/index.bs +++ b/index.bs @@ -262,7 +262,7 @@ interface SFrameDecrypterStream : EventTarget { constructor(optional SFrameTransformOptions options = {}); }; SFrameDecrypterStream includes GenericTransformStream; -SFrameDecrypterStream includes SFrameDecrypterManagement; +SFrameDecrypterStream includes SFrameDecrypterManager; enum SFrameTransformErrorEventType { "authentication",