@matter/protocol 0.17.7-alpha.0-20260723-6f672ac9d → 0.17.7

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.
@@ -263,7 +263,7 @@ class ClientSubscriptions {
263
263
  let { timeoutAt } = subscription;
264
264
  if (timeoutAt === void 0) {
265
265
  timeoutAt = subscription.timeoutAt = (0, import_general.Timestamp)(now + subscription.timeout);
266
- } else if (timeoutAt < now) {
266
+ } else if (timeoutAt <= now) {
267
267
  subscription.timedOut();
268
268
  continue;
269
269
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/action/client/subscription/ClientSubscriptions.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FabricGroups.d.ts","sourceRoot":"","sources":["../../../src/groups/FabricGroups.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAuC,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAAE,OAAO,EAA0B,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAU,MAAM,aAAa,CAAC;AAE3D,eAAO,MAAM,mBAAmB,yBAAoC,CAAC;AAErE,eAAO,MAAM,4BAA4B,QAAyB,CAAC;AACnE;;GAEG;AACH,qBAAa,YAAY;;IAQrB,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,EA2BnD;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAElC;IAED,0DAA0D;IAC1D,IAAI,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAExC;IAED,IAAI,SAAS,IAAI,cAAc,CAE9B;IAED,kFAAkF;IAClF,IAAI,QAAQ;;;;SAEX;IAED,IAAI,aAAa,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAE7C;IAED,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EAE1C;IAED,IAAI,SAAS,2DAEZ;IAED,kBAAkB,CAAC,OAAO,EAAE,OAAO;;;;;;MAElC;IAED,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,iCAEjD;IAED,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAE5C;IAED,8FAA8F;IAC9F,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,QAErE;IAED,iEAAiE;IACjE,0BAA0B,CAAC,OAAO,EAAE,OAAO,QAE1C;IAcD;;;OAGG;IACG,kBAAkB,CAAC,WAAW,EAAE,WAAW,iBA+ChD;IAED,yCAAyC;IACzC,iBAAiB,CAAC,aAAa,EAAE,MAAM,WAKtC;CACJ"}
1
+ {"version":3,"file":"FabricGroups.d.ts","sourceRoot":"","sources":["../../../src/groups/FabricGroups.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAuC,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAAE,OAAO,EAA0B,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAU,MAAM,aAAa,CAAC;AAE3D,eAAO,MAAM,mBAAmB,yBAAoC,CAAC;AAErE,eAAO,MAAM,4BAA4B,QAAyB,CAAC;AACnE;;GAEG;AACH,qBAAa,YAAY;;IAQrB,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,EA2BnD;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAElC;IAED,0DAA0D;IAC1D,IAAI,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAExC;IAED,IAAI,SAAS,IAAI,cAAc,CAE9B;IAED,kFAAkF;IAClF,IAAI,QAAQ;;;;SAEX;IAED,IAAI,aAAa,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAE7C;IAED,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EAE1C;IAED,IAAI,SAAS,2DAEZ;IAED,kBAAkB,CAAC,OAAO,EAAE,OAAO;;;;;;MAElC;IAED,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,iCAEjD;IAED,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAE5C;IAED,8FAA8F;IAC9F,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,QAErE;IAED,iEAAiE;IACjE,0BAA0B,CAAC,OAAO,EAAE,OAAO,QAE1C;IAcD;;;OAGG;IACG,kBAAkB,CAAC,WAAW,EAAE,WAAW,iBAqDhD;IAED,yCAAyC;IACzC,iBAAiB,CAAC,aAAa,EAAE,MAAM,WAUtC;CA0BJ"}
@@ -127,6 +127,7 @@ class FabricGroups {
127
127
  */
128
128
  async setFromGroupKeySet(groupKeySet) {
129
129
  const { epochKey0, epochKey1, epochKey2 } = groupKeySet;
130
+ const previousEntry = this.#keySets.get("groupKeySetId", groupKeySet.groupKeySetId);
130
131
  if (epochKey0 === null) {
131
132
  throw new import_general.MatterFlowError("EpochKey0 must be set");
132
133
  }
@@ -151,13 +152,45 @@ class FabricGroups {
151
152
  operationalPrivacyKey2,
152
153
  groupSessionId2: operationalEpochKey2 !== null ? await this.#keySets.sessionIdFromKey(this.#fabric.crypto, operationalEpochKey2) : null
153
154
  });
155
+ if (previousEntry !== void 0) {
156
+ this.#forgetUnreferencedReceptionState(previousEntry);
157
+ }
154
158
  }
155
159
  /** Removes a group key set by its id. */
156
160
  removeGroupKeySet(groupKeySetId) {
157
161
  if (groupKeySetId === 0) {
158
162
  throw new import_general.InternalError("Cannot remove the group key set 0.");
159
163
  }
160
- return this.#keySets.delete("groupKeySetId", groupKeySetId);
164
+ const removedEntry = this.#keySets.get("groupKeySetId", groupKeySetId);
165
+ const deleted = this.#keySets.delete("groupKeySetId", groupKeySetId);
166
+ if (removedEntry !== void 0) {
167
+ this.#forgetUnreferencedReceptionState(removedEntry);
168
+ }
169
+ return deleted;
170
+ }
171
+ /**
172
+ * Forget the group message replay-protection state for a departing key set's operational keys, unless a remaining
173
+ * key set still derives the same key — duplicate epoch keys share one reception window, so it must survive until the
174
+ * last referencing key set is gone.
175
+ */
176
+ #forgetUnreferencedReceptionState(formerEntry) {
177
+ const stillReferenced = /* @__PURE__ */ new Set();
178
+ for (const keySet of this.#keySets) {
179
+ for (const key of [keySet.operationalEpochKey0, keySet.operationalEpochKey1, keySet.operationalEpochKey2]) {
180
+ if (key !== null) {
181
+ stillReferenced.add(import_general.Bytes.toHex(key));
182
+ }
183
+ }
184
+ }
185
+ for (const key of [
186
+ formerEntry.operationalEpochKey0,
187
+ formerEntry.operationalEpochKey1,
188
+ formerEntry.operationalEpochKey2
189
+ ]) {
190
+ if (key !== null && !stillReferenced.has(import_general.Bytes.toHex(key))) {
191
+ this.#messagingState.forgetReceptionState(key);
192
+ }
193
+ }
161
194
  }
162
195
  }
163
196
  //# sourceMappingURL=FabricGroups.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/groups/FabricGroups.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -20,5 +20,11 @@ export declare class MessagingState {
20
20
  * Returns the message reception state for a given source node id and operational key.
21
21
  */
22
22
  receptionStateFor(sourceNodeId: NodeId, operationalKey: Bytes): MessageReceptionStateEncryptedWithRollover;
23
+ /**
24
+ * Discards the replay-protection reception state for an operational key. Called when the key's key set is removed
25
+ * so that a later key set reusing the same epoch key starts a fresh counter window and its first message
26
+ * re-synchronizes instead of being rejected as a replay against the removed key's high-water counter.
27
+ */
28
+ forgetReceptionState(operationalKey: Bytes): void;
23
29
  }
24
30
  //# sourceMappingURL=MessagingState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessagingState.d.ts","sourceRoot":"","sources":["../../../src/groups/MessagingState.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,0CAA0C,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,KAAK,EAAyB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAOvC,qBAAa,cAAc;;IAMvB,YAAY,OAAO,CAAC,EAAE,cAAc,EAInC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAKlC;IAED;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmB7D;IAED;;;OAGG;IACG,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CASlD;IAED;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,8CAU5D;CACJ"}
1
+ {"version":3,"file":"MessagingState.d.ts","sourceRoot":"","sources":["../../../src/groups/MessagingState.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,0CAA0C,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,KAAK,EAAyB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAOvC,qBAAa,cAAc;;IAMvB,YAAY,OAAO,CAAC,EAAE,cAAc,EAInC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAKlC;IAED;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmB7D;IAED;;;OAGG;IACG,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CASlD;IAED;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,8CAU5D;IAED;;;;OAIG;IACH,oBAAoB,CAAC,cAAc,EAAE,KAAK,QAEzC;CACJ"}
@@ -99,5 +99,13 @@ class MessagingState {
99
99
  }
100
100
  return receptionState;
101
101
  }
102
+ /**
103
+ * Discards the replay-protection reception state for an operational key. Called when the key's key set is removed
104
+ * so that a later key set reusing the same epoch key starts a fresh counter window and its first message
105
+ * re-synchronizes instead of being rejected as a replay against the removed key's high-water counter.
106
+ */
107
+ forgetReceptionState(operationalKey) {
108
+ this.#messageDataReceptionState.delete(import_general.Bytes.toHex(operationalKey));
109
+ }
102
110
  }
103
111
  //# sourceMappingURL=MessagingState.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/groups/MessagingState.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,4BAAwC;AACxC,mCAA2D;AAC3D,qBAA6D;AAP7D;AAAA;AAAA;AAAA;AAAA;AAUA,MAAM,SAAS,sBAAO,IAAI,gBAAgB;AAG1C,MAAM,gCAAgC;AAE/B,MAAM,eAAe;AAAA;AAAA,EAEf,6BAA6B,oBAAI,IAAqE;AAAA,EAE/G;AAAA,EAEA,YAAY,SAA0B;AAClC,QAAI,YAAY,QAAW;AACvB,WAAK,WAAW;AAAA,IACpB;AAAA,EACJ;AAAA,EAEA,IAAI,QAAQ,SAAyB;AACjC,QAAI,KAAK,aAAa,QAAW;AAC7B,YAAM,IAAI,6BAAc,uCAAuC;AAAA,IACnE;AACA,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,4BAAyD;AAC3D,QAAI,CAAC,KAAK,UAAU;AAChB,aAAO;AAAA,IACX;AACA,QAAI;AACJ,eAAW,cAAc,MAAM,KAAK,SAAS,KAAK,GAAG;AACjD,UAAI,CAAC,8BAA8B,KAAK,UAAU,GAAG;AACjD;AAAA,MACJ;AACA,YAAM,QAAQ,MAAM,KAAK,SAAS,IAAY,UAAU;AACxD,UAAI,OAAO,UAAU,YAAY,QAAQ,KAAK,QAAQ,+CAAyB;AAC3E,eAAO,KAAK,iDAAiD,UAAU,KAAK,KAAK,EAAE;AACnF;AAAA,MACJ;AACA,UAAI,QAAQ,UAAa,QAAQ,KAAK;AAClC,cAAM;AAAA,MACV;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,+BAA8C;AAChD,QAAI,CAAC,KAAK,UAAU;AAChB;AAAA,IACJ;AACA,eAAW,cAAc,MAAM,KAAK,SAAS,KAAK,GAAG;AACjD,UAAI,8BAA8B,KAAK,UAAU,GAAG;AAChD,cAAM,KAAK,SAAS,OAAO,UAAU;AAAA,MACzC;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,cAAsB,gBAAuB;AAC3D,UAAM,oBAAoB,qBAAM,MAAM,cAAc;AACpD,QAAI,iBAAiB,KAAK,2BAA2B,IAAI,iBAAiB,GAAG,IAAI,YAAY;AAC7F,QAAI,mBAAmB,QAAW;AAC9B,uBAAiB,IAAI,wEAA2C;AAChE,YAAM,SAAS,KAAK,2BAA2B,IAAI,iBAAiB,KAAK,oBAAI,IAAI;AACjF,aAAO,IAAI,cAAc,cAAc;AACvC,WAAK,2BAA2B,IAAI,mBAAmB,MAAM;AAAA,IACjE;AACA,WAAO;AAAA,EACX;AACJ;",
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,4BAAwC;AACxC,mCAA2D;AAC3D,qBAA6D;AAP7D;AAAA;AAAA;AAAA;AAAA;AAUA,MAAM,SAAS,sBAAO,IAAI,gBAAgB;AAG1C,MAAM,gCAAgC;AAE/B,MAAM,eAAe;AAAA;AAAA,EAEf,6BAA6B,oBAAI,IAAqE;AAAA,EAE/G;AAAA,EAEA,YAAY,SAA0B;AAClC,QAAI,YAAY,QAAW;AACvB,WAAK,WAAW;AAAA,IACpB;AAAA,EACJ;AAAA,EAEA,IAAI,QAAQ,SAAyB;AACjC,QAAI,KAAK,aAAa,QAAW;AAC7B,YAAM,IAAI,6BAAc,uCAAuC;AAAA,IACnE;AACA,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,4BAAyD;AAC3D,QAAI,CAAC,KAAK,UAAU;AAChB,aAAO;AAAA,IACX;AACA,QAAI;AACJ,eAAW,cAAc,MAAM,KAAK,SAAS,KAAK,GAAG;AACjD,UAAI,CAAC,8BAA8B,KAAK,UAAU,GAAG;AACjD;AAAA,MACJ;AACA,YAAM,QAAQ,MAAM,KAAK,SAAS,IAAY,UAAU;AACxD,UAAI,OAAO,UAAU,YAAY,QAAQ,KAAK,QAAQ,+CAAyB;AAC3E,eAAO,KAAK,iDAAiD,UAAU,KAAK,KAAK,EAAE;AACnF;AAAA,MACJ;AACA,UAAI,QAAQ,UAAa,QAAQ,KAAK;AAClC,cAAM;AAAA,MACV;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,+BAA8C;AAChD,QAAI,CAAC,KAAK,UAAU;AAChB;AAAA,IACJ;AACA,eAAW,cAAc,MAAM,KAAK,SAAS,KAAK,GAAG;AACjD,UAAI,8BAA8B,KAAK,UAAU,GAAG;AAChD,cAAM,KAAK,SAAS,OAAO,UAAU;AAAA,MACzC;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,cAAsB,gBAAuB;AAC3D,UAAM,oBAAoB,qBAAM,MAAM,cAAc;AACpD,QAAI,iBAAiB,KAAK,2BAA2B,IAAI,iBAAiB,GAAG,IAAI,YAAY;AAC7F,QAAI,mBAAmB,QAAW;AAC9B,uBAAiB,IAAI,wEAA2C;AAChE,YAAM,SAAS,KAAK,2BAA2B,IAAI,iBAAiB,KAAK,oBAAI,IAAI;AACjF,aAAO,IAAI,cAAc,cAAc;AACvC,WAAK,2BAA2B,IAAI,mBAAmB,MAAM;AAAA,IACjE;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,qBAAqB,gBAAuB;AACxC,SAAK,2BAA2B,OAAO,qBAAM,MAAM,cAAc,CAAC;AAAA,EACtE;AACJ;",
5
5
  "names": []
6
6
  }
@@ -248,7 +248,7 @@ class ClientSubscriptions {
248
248
  let { timeoutAt } = subscription;
249
249
  if (timeoutAt === void 0) {
250
250
  timeoutAt = subscription.timeoutAt = Timestamp(now + subscription.timeout);
251
- } else if (timeoutAt < now) {
251
+ } else if (timeoutAt <= now) {
252
252
  subscription.timedOut();
253
253
  continue;
254
254
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/action/client/subscription/ClientSubscriptions.ts"],
4
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,SAAsB,sBAAsB;AAC5C;AAAA,EACI;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,OACG;AAOA,MAAM,oBAA8C;AAAA,EACvD;AAAA,EACA,UAAU,IAAI,SAA6B;AAAA,EAC3C,SAAS,IAAI,eAA8C;AAAA,EAC3D;AAAA,EACA,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB;AAAA,EACA,gBAAgB,IAAI,gBAAgB;AAAA,EAEpC,YAAY,UAA0B;AAClC,SAAK,YAAY,SAAS,KAAK,sBAAsB;AAAA,EACzD;AAAA,EAEA,QAAQ,cAAc,MAAM,EAAE,KAAkB;AAC5C,UAAM,WAAW,IAAI,oBAAoB,GAAG;AAC5C,QAAI,IAAI,qBAAqB,QAAQ;AACrC,WAAO;AAAA,EACX;AAAA,EAEA,QAAQ,MAAiB;AACrB,WAAO,KAAK,UAAU,KAAK,GAAG,IAAI;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,YAAY;AACZ,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,qBAAkC;AAClC,WAAO,KAAK,cAAc;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,mBAAmB;AACrB,QAAI,KAAK,UAAU;AAEf,UAAI,KAAK,kBAAkB;AACvB,cAAM,KAAK,iBAAiB;AAAA,MAChC;AACA;AAAA,IACJ;AACA,SAAK,WAAW;AAChB,SAAK,cAAc,MAAM;AAEzB,QAAI,KAAK,iBAAiB,GAAG;AACzB,YAAM,EAAE,SAAS,SAAS,IAAI,cAAoB;AAClD,WAAK,mBAAmB,EAAE,SAAS,SAAS;AAC5C,YAAM;AAAA,IACV;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,eAA2B;AACvB,SAAK;AAEL,WAAO;AAAA,MACH,CAAC,OAAO,OAAO,GAAG,MAAM;AACpB,YAAI,KAAK,kBAAkB,GAAG;AAC1B,gBAAM,IAAI,cAAc,gDAAgD;AAAA,QAC5E;AAEA,aAAK;AAEL,YAAI,KAAK,mBAAmB,KAAK,KAAK,kBAAkB;AACpD,eAAK,iBAAiB,SAAS;AAC/B,eAAK,mBAAmB;AAAA,QAC5B;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,cAAkC;AACxC,SAAK,QAAQ,IAAI,YAAY;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,cAAgC;AACpC,QAAI,UAAU,KAAK,OAAO,IAAI,aAAa,IAAI;AAC/C,QAAI,YAAY,QAAW;AACvB,WAAK,OAAO,IAAI,aAAa,MAAO,UAAU,oBAAI,IAAI,CAAE;AAAA,IAC5D;AACA,YAAQ,IAAI,aAAa,gBAAgB,YAAY;AAErD,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,SAAsB,IAAoB;AAC9C,WAAO,KAAK,OAAO,IAAI,OAAO,GAAG,IAAI,EAAE;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,uBAAuB,SAA6C;AAChE,UAAM,UAAU,KAAK,OAAO,IAAI,OAAO;AACvC,QAAI,YAAY,QAAW;AACvB,aAAO;AAAA,IACX;AACA,QAAI;AACJ,eAAW,gBAAgB,QAAQ,OAAO,GAAG;AACzC,YAAM,aAAa,aAAa;AAChC,UAAI,eAAe,WAAc,WAAW,UAAa,aAAa,SAAS;AAC3E,iBAAS;AAAA,MACb;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,SAAsB;AAC/B,UAAM,UAAU,KAAK,OAAO,IAAI,OAAO;AACvC,QAAI,SAAS;AACT,iBAAW,gBAAgB,CAAC,GAAG,QAAQ,OAAO,CAAC,GAAG;AAC9C,qBAAa,MAAM;AAAA,MACvB;AACA,WAAK,WAAW;AAAA,IACpB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,cAAkC;AACrC,UAAM,UAAU,KAAK,OAAO,IAAI,aAAa,IAAI;AACjD,QAAI,SAAS,OAAO,aAAa,cAAc,GAAG;AAC9C,UAAI,CAAC,QAAQ,MAAM;AACf,aAAK,OAAO,OAAO,aAAa,IAAI;AAAA,MACxC;AAAA,IACJ;AACA,SAAK,QAAQ,OAAO,YAAY;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA,EAKA,CAAC,OAAO,QAAQ,IAAI;AAChB,WAAO,KAAK,QAAQ,OAAO,QAAQ,EAAE;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,QAAQ;AACV;AAAA;AAAA,YAAM,WAAW,qBAAK,UAAU,QAAQ;AAKxC,YAAM,KAAK,iBAAiB;AAE5B,UAAI,KAAK,UAAU;AACf,aAAK,SAAS,KAAK;AACnB,aAAK,WAAW;AAAA,MACpB;AAEA,iBAAW,gBAAgB,KAAK,SAAS;AACrC,qBAAa,MAAM;AAAA,MACvB;AAEA,YAAM,KAAK,QAAQ;AAAA,aAhBnB;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBJ;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa;AACT,QAAI,KAAK,UAAU;AACf,WAAK,UAAU,KAAK;AACpB;AAAA,IACJ;AAEA,UAAM,MAAM,KAAK;AACjB,QAAI;AAGJ,eAAW,QAAQ,KAAK,OAAO,OAAO,GAAG;AACrC,iBAAW,gBAAgB,KAAK,OAAO,GAAG;AAEtC,YAAI,aAAa,WAAW;AACxB;AAAA,QACJ;AAGA,YAAI,EAAE,UAAU,IAAI;AACpB,YAAI,cAAc,QAAW;AAEzB,sBAAY,aAAa,YAAY,UAAU,MAAM,aAAa,OAAO;AAAA,QAC7E,WAAW,YAAY,KAAK;AAExB,uBAAa,SAAS;AACtB;AAAA,QACJ;AAGA,YAAI,kBAAkB,UAAa,gBAAgB,WAAW;AAC1D,0BAAgB;AAAA,QACpB;AAAA,MACJ;AAAA,IACJ;AAGA,QAAI,kBAAkB,QAAW;AAC7B,WAAK,UAAU,KAAK;AACpB;AAAA,IACJ;AAGA,QAAI,KAAK,UAAU;AACf,WAAK,UAAU,KAAK;AACpB,WAAK,SAAS,WAAW,OAAO,gBAAgB,GAAG;AAAA,IACvD,OAAO;AACH,WAAK,WAAW,KAAK;AAAA,QACjB;AAAA,QACA,OAAO,gBAAgB,GAAG;AAAA,QAC1B,KAAK,WAAW,KAAK,IAAI;AAAA,MAC7B;AAAA,IACJ;AACA,SAAK,SAAS,MAAM;AAAA,EACxB;AACJ;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FabricGroups.d.ts","sourceRoot":"","sources":["../../../src/groups/FabricGroups.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAuC,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAAE,OAAO,EAA0B,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAU,MAAM,aAAa,CAAC;AAE3D,eAAO,MAAM,mBAAmB,yBAAoC,CAAC;AAErE,eAAO,MAAM,4BAA4B,QAAyB,CAAC;AACnE;;GAEG;AACH,qBAAa,YAAY;;IAQrB,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,EA2BnD;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAElC;IAED,0DAA0D;IAC1D,IAAI,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAExC;IAED,IAAI,SAAS,IAAI,cAAc,CAE9B;IAED,kFAAkF;IAClF,IAAI,QAAQ;;;;SAEX;IAED,IAAI,aAAa,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAE7C;IAED,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EAE1C;IAED,IAAI,SAAS,2DAEZ;IAED,kBAAkB,CAAC,OAAO,EAAE,OAAO;;;;;;MAElC;IAED,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,iCAEjD;IAED,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAE5C;IAED,8FAA8F;IAC9F,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,QAErE;IAED,iEAAiE;IACjE,0BAA0B,CAAC,OAAO,EAAE,OAAO,QAE1C;IAcD;;;OAGG;IACG,kBAAkB,CAAC,WAAW,EAAE,WAAW,iBA+ChD;IAED,yCAAyC;IACzC,iBAAiB,CAAC,aAAa,EAAE,MAAM,WAKtC;CACJ"}
1
+ {"version":3,"file":"FabricGroups.d.ts","sourceRoot":"","sources":["../../../src/groups/FabricGroups.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAuC,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAAE,OAAO,EAA0B,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAU,MAAM,aAAa,CAAC;AAE3D,eAAO,MAAM,mBAAmB,yBAAoC,CAAC;AAErE,eAAO,MAAM,4BAA4B,QAAyB,CAAC;AACnE;;GAEG;AACH,qBAAa,YAAY;;IAQrB,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,EA2BnD;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAElC;IAED,0DAA0D;IAC1D,IAAI,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAExC;IAED,IAAI,SAAS,IAAI,cAAc,CAE9B;IAED,kFAAkF;IAClF,IAAI,QAAQ;;;;SAEX;IAED,IAAI,aAAa,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAE7C;IAED,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EAE1C;IAED,IAAI,SAAS,2DAEZ;IAED,kBAAkB,CAAC,OAAO,EAAE,OAAO;;;;;;MAElC;IAED,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,iCAEjD;IAED,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAE5C;IAED,8FAA8F;IAC9F,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,QAErE;IAED,iEAAiE;IACjE,0BAA0B,CAAC,OAAO,EAAE,OAAO,QAE1C;IAcD;;;OAGG;IACG,kBAAkB,CAAC,WAAW,EAAE,WAAW,iBAqDhD;IAED,yCAAyC;IACzC,iBAAiB,CAAC,aAAa,EAAE,MAAM,WAUtC;CA0BJ"}
@@ -102,6 +102,7 @@ class FabricGroups {
102
102
  */
103
103
  async setFromGroupKeySet(groupKeySet) {
104
104
  const { epochKey0, epochKey1, epochKey2 } = groupKeySet;
105
+ const previousEntry = this.#keySets.get("groupKeySetId", groupKeySet.groupKeySetId);
105
106
  if (epochKey0 === null) {
106
107
  throw new MatterFlowError("EpochKey0 must be set");
107
108
  }
@@ -126,13 +127,45 @@ class FabricGroups {
126
127
  operationalPrivacyKey2,
127
128
  groupSessionId2: operationalEpochKey2 !== null ? await this.#keySets.sessionIdFromKey(this.#fabric.crypto, operationalEpochKey2) : null
128
129
  });
130
+ if (previousEntry !== void 0) {
131
+ this.#forgetUnreferencedReceptionState(previousEntry);
132
+ }
129
133
  }
130
134
  /** Removes a group key set by its id. */
131
135
  removeGroupKeySet(groupKeySetId) {
132
136
  if (groupKeySetId === 0) {
133
137
  throw new InternalError("Cannot remove the group key set 0.");
134
138
  }
135
- return this.#keySets.delete("groupKeySetId", groupKeySetId);
139
+ const removedEntry = this.#keySets.get("groupKeySetId", groupKeySetId);
140
+ const deleted = this.#keySets.delete("groupKeySetId", groupKeySetId);
141
+ if (removedEntry !== void 0) {
142
+ this.#forgetUnreferencedReceptionState(removedEntry);
143
+ }
144
+ return deleted;
145
+ }
146
+ /**
147
+ * Forget the group message replay-protection state for a departing key set's operational keys, unless a remaining
148
+ * key set still derives the same key — duplicate epoch keys share one reception window, so it must survive until the
149
+ * last referencing key set is gone.
150
+ */
151
+ #forgetUnreferencedReceptionState(formerEntry) {
152
+ const stillReferenced = /* @__PURE__ */ new Set();
153
+ for (const keySet of this.#keySets) {
154
+ for (const key of [keySet.operationalEpochKey0, keySet.operationalEpochKey1, keySet.operationalEpochKey2]) {
155
+ if (key !== null) {
156
+ stillReferenced.add(Bytes.toHex(key));
157
+ }
158
+ }
159
+ }
160
+ for (const key of [
161
+ formerEntry.operationalEpochKey0,
162
+ formerEntry.operationalEpochKey1,
163
+ formerEntry.operationalEpochKey2
164
+ ]) {
165
+ if (key !== null && !stillReferenced.has(Bytes.toHex(key))) {
166
+ this.#messagingState.forgetReceptionState(key);
167
+ }
168
+ }
136
169
  }
137
170
  }
138
171
  export {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/groups/FabricGroups.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -20,5 +20,11 @@ export declare class MessagingState {
20
20
  * Returns the message reception state for a given source node id and operational key.
21
21
  */
22
22
  receptionStateFor(sourceNodeId: NodeId, operationalKey: Bytes): MessageReceptionStateEncryptedWithRollover;
23
+ /**
24
+ * Discards the replay-protection reception state for an operational key. Called when the key's key set is removed
25
+ * so that a later key set reusing the same epoch key starts a fresh counter window and its first message
26
+ * re-synchronizes instead of being rejected as a replay against the removed key's high-water counter.
27
+ */
28
+ forgetReceptionState(operationalKey: Bytes): void;
23
29
  }
24
30
  //# sourceMappingURL=MessagingState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessagingState.d.ts","sourceRoot":"","sources":["../../../src/groups/MessagingState.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,0CAA0C,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,KAAK,EAAyB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAOvC,qBAAa,cAAc;;IAMvB,YAAY,OAAO,CAAC,EAAE,cAAc,EAInC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAKlC;IAED;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmB7D;IAED;;;OAGG;IACG,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CASlD;IAED;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,8CAU5D;CACJ"}
1
+ {"version":3,"file":"MessagingState.d.ts","sourceRoot":"","sources":["../../../src/groups/MessagingState.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,0CAA0C,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,KAAK,EAAyB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAOvC,qBAAa,cAAc;;IAMvB,YAAY,OAAO,CAAC,EAAE,cAAc,EAInC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAKlC;IAED;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmB7D;IAED;;;OAGG;IACG,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CASlD;IAED;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,8CAU5D;IAED;;;;OAIG;IACH,oBAAoB,CAAC,cAAc,EAAE,KAAK,QAEzC;CACJ"}
@@ -76,6 +76,14 @@ class MessagingState {
76
76
  }
77
77
  return receptionState;
78
78
  }
79
+ /**
80
+ * Discards the replay-protection reception state for an operational key. Called when the key's key set is removed
81
+ * so that a later key set reusing the same epoch key starts a fresh counter window and its first message
82
+ * re-synchronizes instead of being rejected as a replay against the removed key's high-water counter.
83
+ */
84
+ forgetReceptionState(operationalKey) {
85
+ this.#messageDataReceptionState.delete(Bytes.toHex(operationalKey));
86
+ }
79
87
  }
80
88
  export {
81
89
  MessagingState
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/groups/MessagingState.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,SAAS,+BAA+B;AACxC,SAAS,kDAAkD;AAC3D,SAAS,OAAO,eAAe,cAA8B;AAG7D,MAAM,SAAS,OAAO,IAAI,gBAAgB;AAG1C,MAAM,gCAAgC;AAE/B,MAAM,eAAe;AAAA;AAAA,EAEf,6BAA6B,oBAAI,IAAqE;AAAA,EAE/G;AAAA,EAEA,YAAY,SAA0B;AAClC,QAAI,YAAY,QAAW;AACvB,WAAK,WAAW;AAAA,IACpB;AAAA,EACJ;AAAA,EAEA,IAAI,QAAQ,SAAyB;AACjC,QAAI,KAAK,aAAa,QAAW;AAC7B,YAAM,IAAI,cAAc,uCAAuC;AAAA,IACnE;AACA,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,4BAAyD;AAC3D,QAAI,CAAC,KAAK,UAAU;AAChB,aAAO;AAAA,IACX;AACA,QAAI;AACJ,eAAW,cAAc,MAAM,KAAK,SAAS,KAAK,GAAG;AACjD,UAAI,CAAC,8BAA8B,KAAK,UAAU,GAAG;AACjD;AAAA,MACJ;AACA,YAAM,QAAQ,MAAM,KAAK,SAAS,IAAY,UAAU;AACxD,UAAI,OAAO,UAAU,YAAY,QAAQ,KAAK,QAAQ,yBAAyB;AAC3E,eAAO,KAAK,iDAAiD,UAAU,KAAK,KAAK,EAAE;AACnF;AAAA,MACJ;AACA,UAAI,QAAQ,UAAa,QAAQ,KAAK;AAClC,cAAM;AAAA,MACV;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,+BAA8C;AAChD,QAAI,CAAC,KAAK,UAAU;AAChB;AAAA,IACJ;AACA,eAAW,cAAc,MAAM,KAAK,SAAS,KAAK,GAAG;AACjD,UAAI,8BAA8B,KAAK,UAAU,GAAG;AAChD,cAAM,KAAK,SAAS,OAAO,UAAU;AAAA,MACzC;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,cAAsB,gBAAuB;AAC3D,UAAM,oBAAoB,MAAM,MAAM,cAAc;AACpD,QAAI,iBAAiB,KAAK,2BAA2B,IAAI,iBAAiB,GAAG,IAAI,YAAY;AAC7F,QAAI,mBAAmB,QAAW;AAC9B,uBAAiB,IAAI,2CAA2C;AAChE,YAAM,SAAS,KAAK,2BAA2B,IAAI,iBAAiB,KAAK,oBAAI,IAAI;AACjF,aAAO,IAAI,cAAc,cAAc;AACvC,WAAK,2BAA2B,IAAI,mBAAmB,MAAM;AAAA,IACjE;AACA,WAAO;AAAA,EACX;AACJ;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,SAAS,+BAA+B;AACxC,SAAS,kDAAkD;AAC3D,SAAS,OAAO,eAAe,cAA8B;AAG7D,MAAM,SAAS,OAAO,IAAI,gBAAgB;AAG1C,MAAM,gCAAgC;AAE/B,MAAM,eAAe;AAAA;AAAA,EAEf,6BAA6B,oBAAI,IAAqE;AAAA,EAE/G;AAAA,EAEA,YAAY,SAA0B;AAClC,QAAI,YAAY,QAAW;AACvB,WAAK,WAAW;AAAA,IACpB;AAAA,EACJ;AAAA,EAEA,IAAI,QAAQ,SAAyB;AACjC,QAAI,KAAK,aAAa,QAAW;AAC7B,YAAM,IAAI,cAAc,uCAAuC;AAAA,IACnE;AACA,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,4BAAyD;AAC3D,QAAI,CAAC,KAAK,UAAU;AAChB,aAAO;AAAA,IACX;AACA,QAAI;AACJ,eAAW,cAAc,MAAM,KAAK,SAAS,KAAK,GAAG;AACjD,UAAI,CAAC,8BAA8B,KAAK,UAAU,GAAG;AACjD;AAAA,MACJ;AACA,YAAM,QAAQ,MAAM,KAAK,SAAS,IAAY,UAAU;AACxD,UAAI,OAAO,UAAU,YAAY,QAAQ,KAAK,QAAQ,yBAAyB;AAC3E,eAAO,KAAK,iDAAiD,UAAU,KAAK,KAAK,EAAE;AACnF;AAAA,MACJ;AACA,UAAI,QAAQ,UAAa,QAAQ,KAAK;AAClC,cAAM;AAAA,MACV;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,+BAA8C;AAChD,QAAI,CAAC,KAAK,UAAU;AAChB;AAAA,IACJ;AACA,eAAW,cAAc,MAAM,KAAK,SAAS,KAAK,GAAG;AACjD,UAAI,8BAA8B,KAAK,UAAU,GAAG;AAChD,cAAM,KAAK,SAAS,OAAO,UAAU;AAAA,MACzC;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,cAAsB,gBAAuB;AAC3D,UAAM,oBAAoB,MAAM,MAAM,cAAc;AACpD,QAAI,iBAAiB,KAAK,2BAA2B,IAAI,iBAAiB,GAAG,IAAI,YAAY;AAC7F,QAAI,mBAAmB,QAAW;AAC9B,uBAAiB,IAAI,2CAA2C;AAChE,YAAM,SAAS,KAAK,2BAA2B,IAAI,iBAAiB,KAAK,oBAAI,IAAI;AACjF,aAAO,IAAI,cAAc,cAAc;AACvC,WAAK,2BAA2B,IAAI,mBAAmB,MAAM;AAAA,IACjE;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,qBAAqB,gBAAuB;AACxC,SAAK,2BAA2B,OAAO,MAAM,MAAM,cAAc,CAAC;AAAA,EACtE;AACJ;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/protocol",
3
- "version": "0.17.7-alpha.0-20260723-6f672ac9d",
3
+ "version": "0.17.7",
4
4
  "description": "Low-level APIs for Matter interaction",
5
5
  "keywords": [
6
6
  "iot",
@@ -35,12 +35,12 @@
35
35
  "#*": "./src/*"
36
36
  },
37
37
  "dependencies": {
38
- "@matter/general": "0.17.7-alpha.0-20260723-6f672ac9d",
39
- "@matter/model": "0.17.7-alpha.0-20260723-6f672ac9d",
40
- "@matter/types": "0.17.7-alpha.0-20260723-6f672ac9d"
38
+ "@matter/general": "0.17.7",
39
+ "@matter/model": "0.17.7",
40
+ "@matter/types": "0.17.7"
41
41
  },
42
42
  "devDependencies": {
43
- "@matter/testing": "0.17.7-alpha.0-20260723-6f672ac9d"
43
+ "@matter/testing": "0.17.7"
44
44
  },
45
45
  "files": [
46
46
  "dist/**/*",
@@ -245,7 +245,7 @@ export class ClientSubscriptions implements Lifetime.Owner {
245
245
  if (timeoutAt === undefined) {
246
246
  // Set timeout time
247
247
  timeoutAt = subscription.timeoutAt = Timestamp(now + subscription.timeout);
248
- } else if (timeoutAt < now) {
248
+ } else if (timeoutAt <= now) {
249
249
  // Timeout
250
250
  subscription.timedOut();
251
251
  continue;
@@ -124,6 +124,7 @@ export class FabricGroups {
124
124
  */
125
125
  async setFromGroupKeySet(groupKeySet: GroupKeySet) {
126
126
  const { epochKey0, epochKey1, epochKey2 } = groupKeySet;
127
+ const previousEntry = this.#keySets.get("groupKeySetId", groupKeySet.groupKeySetId);
127
128
 
128
129
  if (epochKey0 === null) {
129
130
  throw new MatterFlowError("EpochKey0 must be set"); // checked before, but to make typing happy
@@ -169,6 +170,11 @@ export class FabricGroups {
169
170
  ? await this.#keySets.sessionIdFromKey(this.#fabric.crypto, operationalEpochKey2)
170
171
  : null,
171
172
  });
173
+ // An in-place rewrite that changes epoch keys drops the previous operational keys; forget their reception state
174
+ // (unless still referenced) so a later key set reusing a dropped epoch key re-synchronizes on its first message.
175
+ if (previousEntry !== undefined) {
176
+ this.#forgetUnreferencedReceptionState(previousEntry);
177
+ }
172
178
  }
173
179
 
174
180
  /** Removes a group key set by its id. */
@@ -176,6 +182,36 @@ export class FabricGroups {
176
182
  if (groupKeySetId === 0) {
177
183
  throw new InternalError("Cannot remove the group key set 0.");
178
184
  }
179
- return this.#keySets.delete("groupKeySetId", groupKeySetId);
185
+ const removedEntry = this.#keySets.get("groupKeySetId", groupKeySetId);
186
+ const deleted = this.#keySets.delete("groupKeySetId", groupKeySetId);
187
+ if (removedEntry !== undefined) {
188
+ this.#forgetUnreferencedReceptionState(removedEntry);
189
+ }
190
+ return deleted;
191
+ }
192
+
193
+ /**
194
+ * Forget the group message replay-protection state for a departing key set's operational keys, unless a remaining
195
+ * key set still derives the same key — duplicate epoch keys share one reception window, so it must survive until the
196
+ * last referencing key set is gone.
197
+ */
198
+ #forgetUnreferencedReceptionState(formerEntry: OperationalKeySet) {
199
+ const stillReferenced = new Set<string>();
200
+ for (const keySet of this.#keySets) {
201
+ for (const key of [keySet.operationalEpochKey0, keySet.operationalEpochKey1, keySet.operationalEpochKey2]) {
202
+ if (key !== null) {
203
+ stillReferenced.add(Bytes.toHex(key));
204
+ }
205
+ }
206
+ }
207
+ for (const key of [
208
+ formerEntry.operationalEpochKey0,
209
+ formerEntry.operationalEpochKey1,
210
+ formerEntry.operationalEpochKey2,
211
+ ]) {
212
+ if (key !== null && !stillReferenced.has(Bytes.toHex(key))) {
213
+ this.#messagingState.forgetReceptionState(key);
214
+ }
215
+ }
180
216
  }
181
217
  }
@@ -87,4 +87,13 @@ export class MessagingState {
87
87
  }
88
88
  return receptionState;
89
89
  }
90
+
91
+ /**
92
+ * Discards the replay-protection reception state for an operational key. Called when the key's key set is removed
93
+ * so that a later key set reusing the same epoch key starts a fresh counter window and its first message
94
+ * re-synchronizes instead of being rejected as a replay against the removed key's high-water counter.
95
+ */
96
+ forgetReceptionState(operationalKey: Bytes) {
97
+ this.#messageDataReceptionState.delete(Bytes.toHex(operationalKey));
98
+ }
90
99
  }