@matter/types 0.17.2 → 0.17.3-alpha.0-20260617-ea3690abc

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.
Files changed (44) hide show
  1. package/dist/cjs/cluster/ClusterHelper.d.ts +4 -5
  2. package/dist/cjs/cluster/ClusterHelper.d.ts.map +1 -1
  3. package/dist/cjs/cluster/ClusterHelper.js +2 -13
  4. package/dist/cjs/cluster/ClusterHelper.js.map +1 -1
  5. package/dist/cjs/commissioning/CommissioningOptions.d.ts +1 -1
  6. package/dist/cjs/commissioning/CommissioningOptions.d.ts.map +1 -1
  7. package/dist/cjs/commissioning/CommissioningOptions.js +2 -14
  8. package/dist/cjs/commissioning/CommissioningOptions.js.map +1 -1
  9. package/dist/cjs/schema/PairingCodeSchema.d.ts +29 -0
  10. package/dist/cjs/schema/PairingCodeSchema.d.ts.map +1 -1
  11. package/dist/cjs/schema/PairingCodeSchema.js +44 -3
  12. package/dist/cjs/schema/PairingCodeSchema.js.map +1 -1
  13. package/dist/cjs/tlv/TlvNullable.d.ts.map +1 -1
  14. package/dist/cjs/tlv/TlvNullable.js +2 -0
  15. package/dist/cjs/tlv/TlvNullable.js.map +1 -1
  16. package/dist/cjs/tlv/TlvNumber.d.ts +18 -1
  17. package/dist/cjs/tlv/TlvNumber.d.ts.map +1 -1
  18. package/dist/cjs/tlv/TlvNumber.js +25 -5
  19. package/dist/cjs/tlv/TlvNumber.js.map +1 -1
  20. package/dist/esm/cluster/ClusterHelper.d.ts +4 -5
  21. package/dist/esm/cluster/ClusterHelper.d.ts.map +1 -1
  22. package/dist/esm/cluster/ClusterHelper.js +2 -13
  23. package/dist/esm/cluster/ClusterHelper.js.map +1 -1
  24. package/dist/esm/commissioning/CommissioningOptions.d.ts +1 -1
  25. package/dist/esm/commissioning/CommissioningOptions.d.ts.map +1 -1
  26. package/dist/esm/commissioning/CommissioningOptions.js +2 -14
  27. package/dist/esm/commissioning/CommissioningOptions.js.map +1 -1
  28. package/dist/esm/schema/PairingCodeSchema.d.ts +29 -0
  29. package/dist/esm/schema/PairingCodeSchema.d.ts.map +1 -1
  30. package/dist/esm/schema/PairingCodeSchema.js +53 -4
  31. package/dist/esm/schema/PairingCodeSchema.js.map +1 -1
  32. package/dist/esm/tlv/TlvNullable.d.ts.map +1 -1
  33. package/dist/esm/tlv/TlvNullable.js +3 -1
  34. package/dist/esm/tlv/TlvNullable.js.map +1 -1
  35. package/dist/esm/tlv/TlvNumber.d.ts +18 -1
  36. package/dist/esm/tlv/TlvNumber.d.ts.map +1 -1
  37. package/dist/esm/tlv/TlvNumber.js +25 -5
  38. package/dist/esm/tlv/TlvNumber.js.map +1 -1
  39. package/package.json +4 -4
  40. package/src/cluster/ClusterHelper.ts +4 -16
  41. package/src/commissioning/CommissioningOptions.ts +2 -4
  42. package/src/schema/PairingCodeSchema.ts +68 -2
  43. package/src/tlv/TlvNullable.ts +4 -1
  44. package/src/tlv/TlvNumber.ts +29 -5
@@ -100,7 +100,34 @@ export declare const QrCodeTlvDataDefaultFields: {
100
100
  */
101
101
  commissioningTimeout: import("../tlv/TlvObject.js").OptionalFieldType<number>;
102
102
  };
103
+ /**
104
+ * Inclusive lower bound of the valid passcode range `0x0000001..0x5F5E0FE`.
105
+ * See {@link MatterSpecification.v13.Core} § 5.1.1.6.
106
+ */
107
+ export declare const PASSCODE_MIN = 1;
108
+ /**
109
+ * Inclusive upper bound of the valid passcode range `0x0000001..0x5F5E0FE`.
110
+ * See {@link MatterSpecification.v13.Core} § 5.1.1.6.
111
+ */
112
+ export declare const PASSCODE_MAX = 99999998;
113
+ /**
114
+ * Trivial/insecure passcodes that SHALL NOT be used for PASE.
115
+ * See {@link MatterSpecification.v13.Core} § 5.1.7.1.
116
+ */
117
+ export declare const INVALID_PASSCODES: readonly number[];
118
+ /**
119
+ * Returns true when the passcode is a valid setup passcode: within the {@link PASSCODE_MIN}..{@link PASSCODE_MAX} range
120
+ * and not one of the {@link INVALID_PASSCODES}. Mirrors CHIP's `PayloadContents::IsValidSetupPIN`.
121
+ *
122
+ * The onboarding codecs round-trip arbitrary 27-bit passcodes; use this to validate a decoded payload at parse time
123
+ * rather than deferring to the PASE layer. See {@link MatterSpecification.v13.Core} § 5.1.1.6 / § 5.1.7.1.
124
+ */
125
+ export declare function isValidPasscode(passcode: number): boolean;
126
+ /** Throws {@link UnexpectedDataError} when {@link isValidPasscode} returns false. */
127
+ export declare function assertValidPasscode(passcode: number): void;
103
128
  declare class QrPairingCodeSchema extends Schema<QrCodeData[], string> {
129
+ /** Rejects payloads carrying an invalid passcode per § 5.1.1.6 / § 5.1.7.1. */
130
+ validate(payloadData: QrCodeData[]): void;
104
131
  protected encodeInternal(payloadData: QrCodeData[]): string;
105
132
  protected decodeInternal(encoded: string): QrCodeData[];
106
133
  /**
@@ -130,6 +157,8 @@ export type ManualPairingData = {
130
157
  };
131
158
  /** See {@link MatterSpecification.v10.Core} § 5.1.4.1 Table 38/39/40 */
132
159
  declare class ManualPairingCodeSchema extends Schema<ManualPairingData, string> {
160
+ /** Rejects payloads carrying an invalid passcode per § 5.1.1.6 / § 5.1.7.1. */
161
+ validate({ passcode }: ManualPairingData): void;
133
162
  protected encodeInternal({ discriminator, passcode, vendorId, productId }: ManualPairingData): string;
134
163
  protected decodeInternal(encoded: string): ManualPairingData;
135
164
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PairingCodeSchema.d.ts","sourceRoot":"","sources":["../../../src/schema/PairingCodeSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAgE,MAAM,iBAAiB,CAAC;AACtG,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAKnD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,EACH,QAAQ,EACR,YAAY,EACZ,OAAO,EAGP,oBAAoB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,0DAA0D;AAC1D,eAAO,MAAM,wCAAwC,MAAM,CAAC;AAE5D,0DAA0D;AAC1D,eAAO,MAAM,qCAAqC,OAAO,CAAC;AAE1D,kEAAkE;AAClE,oBAAY,qBAAqB;IAC7B,wFAAwF;IACxF,QAAQ,IAAI;IAEZ,wDAAwD;IACxD,UAAU,IAAI;IAEd,gFAAgF;IAChF,MAAM,IAAI;CACb;AAED,kEAAkE;AAClE,eAAO,MAAM,2BAA2B;IACpC;;;;OAIG;IACH,GAAG;IAEH;;;OAGG;IACH,WAAW;IAEX;;;;;OAKG;IACH,qBAAqB;CACxB,CAAC;AACF,eAAO,MAAM,2BAA2B;IArBpC;;;;OAIG;;IAGH;;;OAGG;;IAGH;;;;;OAKG;;EAG6E,CAAC;AAErF,kEAAkE;AAClE,QAAA,MAAM,gBAAgB;;;;;;;;EAQpB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,gBAAgB,CAAC,GAAG;IACrE;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B;IACnC,sBAAsB;IACtB,YAAY;IACZ,eAAe;IACf,SAAS;IAET;;;OAGG;IACH,eAAe;IAEf;;;OAGG;IACH,oBAAoB;CACvB,CAAC;AAIF,cAAM,mBAAoB,SAAQ,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC;IAC1D,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CA0B1D;IAED,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAYtD;IAED;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,GAAE,SAAS,CAAC,GAAG,CAAyC,OAqBxF;IAED;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAE,SAAS,CAAC,GAAG,CAAyC,2BAetG;CACJ;AAED,eAAO,MAAM,kBAAkB,qBAA4B,CAAC;AAE5D,MAAM,MAAM,iBAAiB,GAAG;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wEAAwE;AACxE,cAAM,uBAAwB,SAAQ,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnE,SAAS,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,iBAAiB,GAAG,MAAM,CAcpG;IAED,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAkB3D;CACJ;AAED,eAAO,MAAM,sBAAsB,yBAAgC,CAAC"}
1
+ {"version":3,"file":"PairingCodeSchema.d.ts","sourceRoot":"","sources":["../../../src/schema/PairingCodeSchema.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,15 @@
3
3
  * Copyright 2022-2026 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Bytes, deepCopy, ImplementationError, UnexpectedDataError, Verhoeff } from "@matter/general";
6
+ import {
7
+ Bytes,
8
+ CRYPTO_PBKDF_ITERATIONS_MAX,
9
+ CRYPTO_PBKDF_ITERATIONS_MIN,
10
+ deepCopy,
11
+ ImplementationError,
12
+ UnexpectedDataError,
13
+ Verhoeff
14
+ } from "@matter/general";
7
15
  import { VendorId } from "../datatype/VendorId.js";
8
16
  import { TlvAny } from "../tlv/TlvAny.js";
9
17
  import { TlvType } from "../tlv/TlvCodec.js";
@@ -61,8 +69,10 @@ const QrCodeTlvDataDefaultFields = {
61
69
  /** Device Serial # */
62
70
  serialNumber: TlvOptionalField(0, TlvAny),
63
71
  // can be TlvString with up to 32 bytes or Unsigned Int up to 8 bytes
64
- pbkdfIterations: TlvOptionalField(1, TlvUInt32.bound({ min: 1e3, max: 1e5 })),
65
- // Or could also be UInt 16?
72
+ pbkdfIterations: TlvOptionalField(
73
+ 1,
74
+ TlvUInt32.bound({ min: CRYPTO_PBKDF_ITERATIONS_MIN, max: CRYPTO_PBKDF_ITERATIONS_MAX })
75
+ ),
66
76
  pbkdfSalt: TlvOptionalField(2, TlvByteString.bound({ minLength: 16, maxLength: 32 })),
67
77
  /**
68
78
  * Number of devices that are expected to be onboarded using this payload when using the Enhanced Commissioning
@@ -75,8 +85,38 @@ const QrCodeTlvDataDefaultFields = {
75
85
  */
76
86
  commissioningTimeout: TlvOptionalField(4, TlvUInt16)
77
87
  };
88
+ const PASSCODE_MIN = 1;
89
+ const PASSCODE_MAX = 99999998;
90
+ const INVALID_PASSCODES = [
91
+ 0,
92
+ 11111111,
93
+ 22222222,
94
+ 33333333,
95
+ 44444444,
96
+ 55555555,
97
+ 66666666,
98
+ 77777777,
99
+ 88888888,
100
+ 99999999,
101
+ 12345678,
102
+ 87654321
103
+ ];
104
+ function isValidPasscode(passcode) {
105
+ return Number.isInteger(passcode) && passcode >= PASSCODE_MIN && passcode <= PASSCODE_MAX && !INVALID_PASSCODES.includes(passcode);
106
+ }
107
+ function assertValidPasscode(passcode) {
108
+ if (!isValidPasscode(passcode)) {
109
+ throw new UnexpectedDataError(`Invalid passcode ${passcode}`);
110
+ }
111
+ }
78
112
  const PREFIX = "MT:";
79
113
  class QrPairingCodeSchema extends Schema {
114
+ /** Rejects payloads carrying an invalid passcode per § 5.1.1.6 / § 5.1.7.1. */
115
+ validate(payloadData) {
116
+ for (const { passcode } of payloadData) {
117
+ assertValidPasscode(passcode);
118
+ }
119
+ }
80
120
  encodeInternal(payloadData) {
81
121
  if (payloadData.length === 0) throw new ImplementationError("Provided Payload data is empty");
82
122
  const result = PREFIX + payloadData.map((payloadData2) => {
@@ -158,6 +198,10 @@ class QrPairingCodeSchema extends Schema {
158
198
  }
159
199
  const QrPairingCodeCodec = new QrPairingCodeSchema();
160
200
  class ManualPairingCodeSchema extends Schema {
201
+ /** Rejects payloads carrying an invalid passcode per § 5.1.1.6 / § 5.1.7.1. */
202
+ validate({ passcode }) {
203
+ assertValidPasscode(passcode);
204
+ }
161
205
  encodeInternal({ discriminator, passcode, vendorId, productId }) {
162
206
  if (discriminator === void 0) throw new UnexpectedDataError("discriminator is required");
163
207
  if (discriminator > 4095) throw new UnexpectedDataError("discriminator value must be less than 4096");
@@ -198,10 +242,15 @@ export {
198
242
  CommissioningFlowType,
199
243
  DiscoveryCapabilitiesBitmap,
200
244
  DiscoveryCapabilitiesSchema,
245
+ INVALID_PASSCODES,
201
246
  MATTER_QR_CODE_ALL_PAYLOAD_MAX_LENGTH,
202
247
  MATTER_QR_CODE_SINGLE_PAYLOAD_MAX_LENGTH,
203
248
  ManualPairingCodeCodec,
249
+ PASSCODE_MAX,
250
+ PASSCODE_MIN,
204
251
  QrCodeTlvDataDefaultFields,
205
- QrPairingCodeCodec
252
+ QrPairingCodeCodec,
253
+ assertValidPasscode,
254
+ isValidPasscode
206
255
  };
207
256
  //# sourceMappingURL=PairingCodeSchema.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/schema/PairingCodeSchema.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,OAAO,UAAU,qBAAqB,qBAAqB,gBAAgB;AACpF,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,eAAe;AACxB,SAAS,WAAW,WAAW,gBAAgB;AAC/C,SAAS,WAAW,wBAAwB;AAE5C,SAAS,eAAe,iBAAiB;AACzC,SAAS,cAAc;AACvB;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEG;AACP,SAAS,cAAc;AAGhB,MAAM,2CAA2C;AAGjD,MAAM,wCAAwC;AAG9C,IAAK,wBAAL,kBAAKA,2BAAL;AAEH,EAAAA,8CAAA,cAAW,KAAX;AAGA,EAAAA,8CAAA,gBAAa,KAAb;AAGA,EAAAA,8CAAA,YAAS,KAAT;AARQ,SAAAA;AAAA,GAAA;AAYL,MAAM,8BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvC,KAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMd,aAAa,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQtB,uBAAuB,QAAQ,CAAC;AACpC;AACO,MAAM,8BAA8B,aAAa,2BAA2B;AAGnF,MAAM,mBAAmB,sBAAsB;AAAA,EAC3C,SAAS,SAAS,GAAG,CAAC;AAAA,EACtB,UAAU,SAAS,GAAG,EAAE;AAAA,EACxB,WAAW,SAAS,IAAI,EAAE;AAAA,EAC1B,UAAU,aAAoC,IAAI,CAAC;AAAA,EACnD,uBAAuB,SAAS,IAAI,CAAC;AAAA,EACrC,eAAe,SAAS,IAAI,EAAE;AAAA,EAC9B,UAAU,SAAS,IAAI,EAAE;AAC7B,CAAC;AAeM,MAAM,6BAA6B;AAAA;AAAA,EAEtC,cAAc,iBAAiB,GAAM,MAAM;AAAA;AAAA,EAC3C,iBAAiB,iBAAiB,GAAM,UAAU,MAAM,EAAE,KAAK,KAAM,KAAK,IAAQ,CAAC,CAAC;AAAA;AAAA,EACpF,WAAW,iBAAiB,GAAM,cAAc,MAAM,EAAE,WAAW,IAAI,WAAW,GAAG,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvF,iBAAiB,iBAAiB,GAAM,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMlE,sBAAsB,iBAAiB,GAAM,SAAS;AAC1D;AAEA,MAAM,SAAS;AAEf,MAAM,4BAA4B,OAA6B;AAAA,EACjD,eAAe,aAAmC;AACxD,QAAI,YAAY,WAAW,EAAG,OAAM,IAAI,oBAAoB,gCAAgC;AAC5F,UAAM,SACF,SACA,YACK,IAAI,CAAAC,iBAAe;AAChB,YAAM,EAAE,QAAQ,IAAIA;AACpB,YAAM,OACF,YAAY,UAAa,QAAQ,aAAa,IACxC,MAAM,GAAG,MAAM,OAAO,iBAAiB,OAAOA,YAAW,GAAG,OAAO,CAAC,IACpE,iBAAiB,OAAOA,YAAW;AAC7C,YAAMC,UAAS,OAAO,OAAO,IAAI;AACjC,UAAIA,QAAO,SAAS,0CAA0C;AAC1D,cAAM,IAAI;AAAA,UACN,qCAAqCA,QAAO,MAAM,oBAAoB,wCAAwC;AAAA,QAClH;AAAA,MACJ;AACA,aAAOA;AAAA,IACX,CAAC,EACA,KAAK,GAAG;AACjB,QAAI,OAAO,SAAS,uCAAuC;AACvD,YAAM,IAAI;AAAA,QACN,qCAAqC,OAAO,MAAM,oBAAoB,qCAAqC;AAAA,MAC/G;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EAEU,eAAe,SAA+B;AACpD,QAAI,CAAC,QAAQ,WAAW,MAAM,EAAG,OAAM,IAAI,oBAAoB,wCAAwC;AACvG,WAAO,QACF,MAAM,OAAO,MAAM,EACnB,MAAM,GAAG,EACT,IAAI,iBAAe;AAChB,YAAM,OAAO,MAAM,GAAG,OAAO,OAAO,WAAW,CAAC;AAChD,aAAO;AAAA,QACH,GAAG,iBAAiB,OAAO,KAAK,MAAM,GAAG,EAAE,CAAC;AAAA,QAC5C,SAAS,KAAK,SAAS,KAAK,KAAK,MAAM,EAAE,IAAI;AAAA;AAAA,MACjD;AAAA,IACJ,CAAC;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,cAAc,MAAa,SAAyB,UAAU,0BAA0B,GAAG;AACvF,UAAM,UAAU,OAAO,OAAO,IAAI;AAClC,QAAI,QAAQ,iBAAiB,QAAW;AACpC,UACI,CAAC,MAAM,QAAQ,QAAQ,YAAY,KACnC,QAAQ,aAAa,WAAW,KAChC,QAAQ,aAAa,CAAC,EAAE,eAAe,UACvC,QAAQ,aAAa,CAAC,EAAE,UAAU,QACpC;AACE,cAAM,IAAI,oBAAoB,gCAAgC;AAAA,MAClE;AACA,cAAQ,QAAQ,aAAa,CAAC,EAAE,WAAW,MAAM;AAAA,QAC7C,KAAK,QAAQ;AAAA,QACb,KAAK,QAAQ;AACT,kBAAQ,eAAe,QAAQ,aAAa,CAAC,EAAE;AAC/C;AAAA,QACJ;AACI,gBAAM,IAAI,oBAAoB,gCAAgC;AAAA,MACtE;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,cAAc,MAA2B,SAAyB,UAAU,0BAA0B,GAAG;AACrG,UAAM,eAAe,SAAS,IAAI;AAClC,QAAI,kBAAkB,gBAAgB,aAAa,iBAAiB,QAAW;AAC3E,cAAQ,OAAO,aAAa,cAAc;AAAA,QACtC,KAAK;AACD,uBAAa,eAAe,UAAU,UAAU,aAAa,YAAY;AACzE;AAAA,QACJ,KAAK;AACD,uBAAa,eAAe,SAAS,UAAU,aAAa,YAAY;AACxE;AAAA,QACJ;AACI,gBAAM,IAAI,oBAAoB,4BAA4B;AAAA,MAClE;AAAA,IACJ;AACA,WAAO,OAAO,OAAO,YAAY;AAAA,EACrC;AACJ;AAEO,MAAM,qBAAqB,IAAI,oBAAoB;AAW1D,MAAM,gCAAgC,OAAkC;AAAA,EAC1D,eAAe,EAAE,eAAe,UAAU,UAAU,UAAU,GAA8B;AAClG,QAAI,kBAAkB,OAAW,OAAM,IAAI,oBAAoB,2BAA2B;AAC1F,QAAI,gBAAgB,KAAM,OAAM,IAAI,oBAAoB,4CAA4C;AACpG,QAAI,SAAS;AACb,UAAM,sBAAsB,aAAa,UAAa,cAAc;AACpE,cAAW,iBAAiB,MAAO,sBAAsB,KAAK,IAAI;AAClE,gBAAa,gBAAgB,QAAU,IAAM,WAAW,OAAS,SAAS,EAAE,SAAS,GAAG,GAAG;AAC3F,eAAW,YAAY,IAAI,SAAS,EAAE,SAAS,GAAG,GAAG;AACrD,QAAI,qBAAqB;AACrB,gBAAU,SAAS,SAAS,EAAE,SAAS,GAAG,GAAG;AAC7C,gBAAU,UAAU,SAAS,EAAE,SAAS,GAAG,GAAG;AAAA,IAClD;AACA,cAAU,IAAI,SAAS,EAAE,gBAAgB,MAAM;AAC/C,WAAO;AAAA,EACX;AAAA,EAEU,eAAe,SAAoC;AACzD,cAAU,QAAQ,QAAQ,OAAO,EAAE;AACnC,QAAI,QAAQ,WAAW,MAAM,QAAQ,WAAW,IAAI;AAChD,YAAM,IAAI,oBAAoB,sBAAsB;AAAA,IACxD;AACA,QAAI,IAAI,SAAS,EAAE,gBAAgB,QAAQ,MAAM,GAAG,EAAE,CAAC,MAAM,SAAS,QAAQ,MAAM,EAAE,CAAC,GAAG;AACtF,YAAM,IAAI,oBAAoB,kBAAkB;AAAA,IACpD;AACA,UAAM,sBAAsB,CAAC,EAAE,SAAS,QAAQ,CAAC,CAAC,IAAK,KAAK;AAC5D,UAAM,sBAAuB,SAAS,QAAQ,CAAC,CAAC,IAAI,MAAS,IAAO,SAAS,QAAQ,MAAM,GAAG,CAAC,CAAC,KAAK,KAAM;AAC3G,UAAM,WAAY,SAAS,QAAQ,MAAM,GAAG,CAAC,CAAC,IAAI,QAAW,SAAS,QAAQ,MAAM,GAAG,EAAE,CAAC,KAAK;AAC/F,QAAI;AACJ,QAAI;AACJ,QAAI,qBAAqB;AACrB,iBAAW,SAAS,SAAS,QAAQ,MAAM,IAAI,EAAE,CAAC,CAAC;AACnD,kBAAY,SAAS,QAAQ,MAAM,IAAI,EAAE,CAAC;AAAA,IAC9C;AACA,WAAO,EAAE,oBAAoB,UAAU,UAAU,UAAU;AAAA,EAC/D;AACJ;AAEO,MAAM,yBAAyB,IAAI,wBAAwB;",
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,eAAe;AACxB,SAAS,WAAW,WAAW,gBAAgB;AAC/C,SAAS,WAAW,wBAAwB;AAE5C,SAAS,eAAe,iBAAiB;AACzC,SAAS,cAAc;AACvB;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEG;AACP,SAAS,cAAc;AAGhB,MAAM,2CAA2C;AAGjD,MAAM,wCAAwC;AAG9C,IAAK,wBAAL,kBAAKA,2BAAL;AAEH,EAAAA,8CAAA,cAAW,KAAX;AAGA,EAAAA,8CAAA,gBAAa,KAAb;AAGA,EAAAA,8CAAA,YAAS,KAAT;AARQ,SAAAA;AAAA,GAAA;AAYL,MAAM,8BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvC,KAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMd,aAAa,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQtB,uBAAuB,QAAQ,CAAC;AACpC;AACO,MAAM,8BAA8B,aAAa,2BAA2B;AAGnF,MAAM,mBAAmB,sBAAsB;AAAA,EAC3C,SAAS,SAAS,GAAG,CAAC;AAAA,EACtB,UAAU,SAAS,GAAG,EAAE;AAAA,EACxB,WAAW,SAAS,IAAI,EAAE;AAAA,EAC1B,UAAU,aAAoC,IAAI,CAAC;AAAA,EACnD,uBAAuB,SAAS,IAAI,CAAC;AAAA,EACrC,eAAe,SAAS,IAAI,EAAE;AAAA,EAC9B,UAAU,SAAS,IAAI,EAAE;AAC7B,CAAC;AAeM,MAAM,6BAA6B;AAAA;AAAA,EAEtC,cAAc,iBAAiB,GAAM,MAAM;AAAA;AAAA,EAC3C,iBAAiB;AAAA,IACb;AAAA,IACA,UAAU,MAAM,EAAE,KAAK,6BAA6B,KAAK,4BAA4B,CAAC;AAAA,EAC1F;AAAA,EACA,WAAW,iBAAiB,GAAM,cAAc,MAAM,EAAE,WAAW,IAAI,WAAW,GAAG,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvF,iBAAiB,iBAAiB,GAAM,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMlE,sBAAsB,iBAAiB,GAAM,SAAS;AAC1D;AAMO,MAAM,eAAe;AAMrB,MAAM,eAAe;AAMrB,MAAM,oBAAuC;AAAA,EAChD;AAAA,EAAG;AAAA,EAAU;AAAA,EAAU;AAAA,EAAU;AAAA,EAAU;AAAA,EAAU;AAAA,EAAU;AAAA,EAAU;AAAA,EAAU;AAAA,EAAU;AAAA,EAAU;AAC3G;AASO,SAAS,gBAAgB,UAA2B;AACvD,SACI,OAAO,UAAU,QAAQ,KACzB,YAAY,gBACZ,YAAY,gBACZ,CAAC,kBAAkB,SAAS,QAAQ;AAE5C;AAGO,SAAS,oBAAoB,UAAwB;AACxD,MAAI,CAAC,gBAAgB,QAAQ,GAAG;AAC5B,UAAM,IAAI,oBAAoB,oBAAoB,QAAQ,EAAE;AAAA,EAChE;AACJ;AAEA,MAAM,SAAS;AAEf,MAAM,4BAA4B,OAA6B;AAAA;AAAA,EAElD,SAAS,aAAiC;AAC/C,eAAW,EAAE,SAAS,KAAK,aAAa;AACpC,0BAAoB,QAAQ;AAAA,IAChC;AAAA,EACJ;AAAA,EAEU,eAAe,aAAmC;AACxD,QAAI,YAAY,WAAW,EAAG,OAAM,IAAI,oBAAoB,gCAAgC;AAC5F,UAAM,SACF,SACA,YACK,IAAI,CAAAC,iBAAe;AAChB,YAAM,EAAE,QAAQ,IAAIA;AACpB,YAAM,OACF,YAAY,UAAa,QAAQ,aAAa,IACxC,MAAM,GAAG,MAAM,OAAO,iBAAiB,OAAOA,YAAW,GAAG,OAAO,CAAC,IACpE,iBAAiB,OAAOA,YAAW;AAC7C,YAAMC,UAAS,OAAO,OAAO,IAAI;AACjC,UAAIA,QAAO,SAAS,0CAA0C;AAC1D,cAAM,IAAI;AAAA,UACN,qCAAqCA,QAAO,MAAM,oBAAoB,wCAAwC;AAAA,QAClH;AAAA,MACJ;AACA,aAAOA;AAAA,IACX,CAAC,EACA,KAAK,GAAG;AACjB,QAAI,OAAO,SAAS,uCAAuC;AACvD,YAAM,IAAI;AAAA,QACN,qCAAqC,OAAO,MAAM,oBAAoB,qCAAqC;AAAA,MAC/G;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EAEU,eAAe,SAA+B;AACpD,QAAI,CAAC,QAAQ,WAAW,MAAM,EAAG,OAAM,IAAI,oBAAoB,wCAAwC;AACvG,WAAO,QACF,MAAM,OAAO,MAAM,EACnB,MAAM,GAAG,EACT,IAAI,iBAAe;AAChB,YAAM,OAAO,MAAM,GAAG,OAAO,OAAO,WAAW,CAAC;AAChD,aAAO;AAAA,QACH,GAAG,iBAAiB,OAAO,KAAK,MAAM,GAAG,EAAE,CAAC;AAAA,QAC5C,SAAS,KAAK,SAAS,KAAK,KAAK,MAAM,EAAE,IAAI;AAAA;AAAA,MACjD;AAAA,IACJ,CAAC;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,cAAc,MAAa,SAAyB,UAAU,0BAA0B,GAAG;AACvF,UAAM,UAAU,OAAO,OAAO,IAAI;AAClC,QAAI,QAAQ,iBAAiB,QAAW;AACpC,UACI,CAAC,MAAM,QAAQ,QAAQ,YAAY,KACnC,QAAQ,aAAa,WAAW,KAChC,QAAQ,aAAa,CAAC,EAAE,eAAe,UACvC,QAAQ,aAAa,CAAC,EAAE,UAAU,QACpC;AACE,cAAM,IAAI,oBAAoB,gCAAgC;AAAA,MAClE;AACA,cAAQ,QAAQ,aAAa,CAAC,EAAE,WAAW,MAAM;AAAA,QAC7C,KAAK,QAAQ;AAAA,QACb,KAAK,QAAQ;AACT,kBAAQ,eAAe,QAAQ,aAAa,CAAC,EAAE;AAC/C;AAAA,QACJ;AACI,gBAAM,IAAI,oBAAoB,gCAAgC;AAAA,MACtE;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,cAAc,MAA2B,SAAyB,UAAU,0BAA0B,GAAG;AACrG,UAAM,eAAe,SAAS,IAAI;AAClC,QAAI,kBAAkB,gBAAgB,aAAa,iBAAiB,QAAW;AAC3E,cAAQ,OAAO,aAAa,cAAc;AAAA,QACtC,KAAK;AACD,uBAAa,eAAe,UAAU,UAAU,aAAa,YAAY;AACzE;AAAA,QACJ,KAAK;AACD,uBAAa,eAAe,SAAS,UAAU,aAAa,YAAY;AACxE;AAAA,QACJ;AACI,gBAAM,IAAI,oBAAoB,4BAA4B;AAAA,MAClE;AAAA,IACJ;AACA,WAAO,OAAO,OAAO,YAAY;AAAA,EACrC;AACJ;AAEO,MAAM,qBAAqB,IAAI,oBAAoB;AAW1D,MAAM,gCAAgC,OAAkC;AAAA;AAAA,EAE3D,SAAS,EAAE,SAAS,GAA4B;AACrD,wBAAoB,QAAQ;AAAA,EAChC;AAAA,EAEU,eAAe,EAAE,eAAe,UAAU,UAAU,UAAU,GAA8B;AAClG,QAAI,kBAAkB,OAAW,OAAM,IAAI,oBAAoB,2BAA2B;AAC1F,QAAI,gBAAgB,KAAM,OAAM,IAAI,oBAAoB,4CAA4C;AACpG,QAAI,SAAS;AACb,UAAM,sBAAsB,aAAa,UAAa,cAAc;AACpE,cAAW,iBAAiB,MAAO,sBAAsB,KAAK,IAAI;AAClE,gBAAa,gBAAgB,QAAU,IAAM,WAAW,OAAS,SAAS,EAAE,SAAS,GAAG,GAAG;AAC3F,eAAW,YAAY,IAAI,SAAS,EAAE,SAAS,GAAG,GAAG;AACrD,QAAI,qBAAqB;AACrB,gBAAU,SAAS,SAAS,EAAE,SAAS,GAAG,GAAG;AAC7C,gBAAU,UAAU,SAAS,EAAE,SAAS,GAAG,GAAG;AAAA,IAClD;AACA,cAAU,IAAI,SAAS,EAAE,gBAAgB,MAAM;AAC/C,WAAO;AAAA,EACX;AAAA,EAEU,eAAe,SAAoC;AACzD,cAAU,QAAQ,QAAQ,OAAO,EAAE;AACnC,QAAI,QAAQ,WAAW,MAAM,QAAQ,WAAW,IAAI;AAChD,YAAM,IAAI,oBAAoB,sBAAsB;AAAA,IACxD;AACA,QAAI,IAAI,SAAS,EAAE,gBAAgB,QAAQ,MAAM,GAAG,EAAE,CAAC,MAAM,SAAS,QAAQ,MAAM,EAAE,CAAC,GAAG;AACtF,YAAM,IAAI,oBAAoB,kBAAkB;AAAA,IACpD;AACA,UAAM,sBAAsB,CAAC,EAAE,SAAS,QAAQ,CAAC,CAAC,IAAK,KAAK;AAC5D,UAAM,sBAAuB,SAAS,QAAQ,CAAC,CAAC,IAAI,MAAS,IAAO,SAAS,QAAQ,MAAM,GAAG,CAAC,CAAC,KAAK,KAAM;AAC3G,UAAM,WAAY,SAAS,QAAQ,MAAM,GAAG,CAAC,CAAC,IAAI,QAAW,SAAS,QAAQ,MAAM,GAAG,EAAE,CAAC,KAAK;AAC/F,QAAI;AACJ,QAAI;AACJ,QAAI,qBAAqB;AACrB,iBAAW,SAAS,SAAS,QAAQ,MAAM,IAAI,EAAE,CAAC,CAAC;AACnD,kBAAY,SAAS,QAAQ,MAAM,IAAI,EAAE,CAAC;AAAA,IAC9C;AACA,WAAO,EAAE,oBAAoB,UAAU,UAAU,UAAU;AAAA,EAC/D;AACJ;AAEO,MAAM,yBAAyB,IAAI,wBAAwB;",
5
5
  "names": ["CommissioningFlowType", "payloadData", "result"]
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TlvNullable.d.ts","sourceRoot":"","sources":["../../../src/tlv/TlvNullable.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,MAAM,EAAW,aAAa,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGrF;;;;GAIG;AACH,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC;IACtD,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAE9B,YAAY,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAwB/B;IAED,0DAA0D;IAC1D,IAAa,OAAO,IAAI,SAAS,CAAC,OAAO,GAAG,SAAS,CAgBpD;IAEQ,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAM/G;IAEQ,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,GAAG,CAAC,GAAG,IAAI,CAuBtF;IAEQ,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAEvC;IAEQ,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,OAAO,GAAG,CAAC,CAK/G;IAEQ,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,OAAO,GAAG,CAAC,CAK9F;CACJ;AAID,2BAA2B;AAC3B,eAAO,MAAM,WAAW,GAAI,CAAC,UAAU,SAAS,CAAC,CAAC,CAAC,KAAG,cAAc,CAAC,CAAC,CAOrE,CAAC"}
1
+ {"version":3,"file":"TlvNullable.d.ts","sourceRoot":"","sources":["../../../src/tlv/TlvNullable.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,MAAM,EAAW,aAAa,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGrF;;;;GAIG;AACH,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC;IACtD,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAE9B,YAAY,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EA2B/B;IAED,0DAA0D;IAC1D,IAAa,OAAO,IAAI,SAAS,CAAC,OAAO,GAAG,SAAS,CAgBpD;IAEQ,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAM/G;IAEQ,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,GAAG,CAAC,GAAG,IAAI,CAuBtF;IAEQ,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAEvC;IAEQ,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,OAAO,GAAG,CAAC,CAK/G;IAEQ,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,OAAO,GAAG,CAAC,CAK9F;CACJ;AAID,2BAA2B;AAC3B,eAAO,MAAM,WAAW,GAAI,CAAC,UAAU,SAAS,CAAC,CAAC,CAAC,KAAG,cAAc,CAAC,CAAC,CAOrE,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * Copyright 2022-2026 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { TlvNumericSchema } from "#tlv/TlvNumber.js";
6
+ import { BitmapWrapper, TlvNumericSchema } from "#tlv/TlvNumber.js";
7
7
  import { ArraySchema } from "./TlvArray.js";
8
8
  import { TlvType } from "./TlvCodec.js";
9
9
  import { TlvSchema } from "./TlvSchema.js";
@@ -26,6 +26,8 @@ class NullableSchema extends TlvSchema {
26
26
  schema = schema.bound({ min: schema.baseTypeMin + BigInt(1), max: schema.max });
27
27
  }
28
28
  }
29
+ } else if (schema instanceof BitmapWrapper) {
30
+ schema = schema.withReservedMsb();
29
31
  }
30
32
  this.schema = schema;
31
33
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/tlv/TlvNullable.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,wBAAwB;AACjC,SAAS,mBAAmB;AAC5B,SAAiB,eAA8B;AAC/C,SAAwC,iBAA4B;AACpE,SAAS,oBAAoB;AAOtB,MAAM,uBAA0B,UAAoB;AAAA,EAC9C;AAAA,EAET,YAAY,QAAsB;AAC9B,UAAM;AAKN,QAAI,kBAAkB,oBAAoB,OAAO,SAAS,QAAQ,OAAO;AAErE,UAAI,OAAO,gBAAgB,KAAK,OAAO,QAAQ,OAAO,aAAa;AAC/D,YAAI,OAAO,OAAO,gBAAgB,UAAU;AACxC,mBAAS,OAAO,MAAM,EAAE,KAAK,OAAO,KAAK,KAAK,OAAO,cAAc,EAAE,CAAC;AAAA,QAC1E,OAAO;AACH,mBAAS,OAAO,MAAM,EAAE,KAAK,OAAO,KAAK,KAAK,OAAO,cAAc,OAAO,CAAC,EAAE,CAAC;AAAA,QAClF;AAAA,MACJ,WAAW,OAAO,cAAc,KAAK,OAAO,QAAQ,OAAO,aAAa;AAEpE,YAAI,OAAO,OAAO,gBAAgB,UAAU;AACxC,mBAAS,OAAO,MAAM,EAAE,KAAK,OAAO,cAAc,GAAG,KAAK,OAAO,IAAI,CAAC;AAAA,QAC1E,OAAO;AACH,mBAAS,OAAO,MAAM,EAAE,KAAK,OAAO,cAAc,OAAO,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC;AAAA,QAClF;AAAA,MACJ;AAAA,IACJ;AACA,SAAK,SAAS;AAAA,EAClB;AAAA;AAAA,EAGA,IAAa,UAAyC;AAClD,UAAM,QAAQ,KAAK,OAAO;AAC1B,QAAI,UAAU,QAAW;AACrB,aAAO;AAAA,IACX;AAEA,UAAM,UACF,MAAM,YAAY,SACZ,MACA,OAAO,MAAM,YAAY,WACvB,MAAM,QAAQ,SAAS,GAAG,IACtB,MAAM,UACN,GAAG,MAAM,OAAO,OACpB,MAAM;AAElB,WAAO,EAAE,GAAG,OAAO,QAAQ;AAAA,EAC/B;AAAA,EAES,kBAAkB,QAAmB,OAAiB,KAAc,SAAoC;AAC7G,QAAI,UAAU,MAAM;AAChB,aAAO,SAAS,EAAE,MAAM,QAAQ,KAAK,GAAG,GAAG;AAAA,IAC/C,OAAO;AACH,WAAK,OAAO,kBAAkB,QAAQ,OAAO,KAAK,OAAO;AAAA,IAC7D;AAAA,EACJ;AAAA,EAES,uBAAuB,QAAmB,YAAqC;AACpF,QAAI,WAAW,SAAS,QAAQ,KAAM,QAAO;AAC7C,UAAM,QAAQ,KAAK,OAAO,uBAAuB,QAAQ,UAAU;AAInE,QACI,UAAU,SACT,KAAK,kBAAkB,eAAe,KAAK,kBAAkB,iBAC7D,MAAc,WAAW,GAC5B;AAKE,UACK,KAAK,kBAAkB,gBAAgB,KAAK,OAAO,SAAS,QAAQ,cACpE,KAAK,OAAO,cAAc,UAAa,KAAK,OAAO,YAAY,GAClE;AACE,eAAO;AAAA,MACX;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EAES,SAAS,OAAuB;AACrC,QAAI,UAAU,KAAM,MAAK,OAAO,SAAS,KAAK;AAAA,EAClD;AAAA,EAES,YAAY,OAAU,SAAiB,YAAiB,eAAgD;AAC7G,QAAI,UAAU,MAAM;AAChB,aAAO,KAAK,OAAO,YAAY,OAAO,SAAS,YAAY,aAAa;AAAA,IAC5E;AACA,WAAO;AAAA,EACX;AAAA,EAES,YAAY,OAAU,SAAiB,eAAgD;AAC5F,QAAI,UAAU,MAAM;AAChB,aAAO,KAAK,OAAO,YAAY,OAAO,SAAS,aAAa;AAAA,IAChE;AACA,WAAO;AAAA,EACX;AACJ;AAEA,MAAM,gBAAgB,oBAAI,QAA6C;AAGhE,MAAM,cAAc,CAAI,WAA4C;AACvE,MAAI,SAAS,cAAc,IAAI,MAAM;AACrC,MAAI,WAAW,QAAW;AACtB,aAAS,IAAI,eAAe,MAAM;AAClC,kBAAc,IAAI,QAAQ,MAAM;AAAA,EACpC;AACA,SAAO;AACX;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1,4 +1,5 @@
1
1
  import { BitSchema, TypeFromPartialBitSchema } from "../schema/BitmapSchema.js";
2
+ import { Schema } from "../schema/Schema.js";
2
3
  import { TlvLength, TlvTag, TlvType, TlvTypeLength } from "./TlvCodec.js";
3
4
  import { TlvReader, TlvSchema, TlvWriter } from "./TlvSchema.js";
4
5
  import { TlvWrapper } from "./TlvWrapper.js";
@@ -51,7 +52,23 @@ export declare const TlvUInt24: TlvNumberSchema;
51
52
  export declare const TlvUInt32: TlvNumberSchema;
52
53
  export declare const TlvUInt64: TlvNumericSchema<number | bigint>;
53
54
  export declare const TlvEnum: <T>() => TlvSchema<T>;
54
- export declare const TlvBitmap: <T extends BitSchema>(underlyingSchema: TlvNumberSchema, bitSchema: T) => TlvWrapper<TypeFromPartialBitSchema<T>, number>;
55
+ /**
56
+ * TLV wrapper for a bitmap. Tracks the underlying numeric schema and the bit schema so a nullable
57
+ * variant can reserve the most-significant bit per spec.
58
+ */
59
+ export declare class BitmapWrapper<D> extends TlvWrapper<D, number> {
60
+ readonly numericSchema: TlvNumericSchema<number>;
61
+ private readonly bitmapSchema;
62
+ constructor(numericSchema: TlvNumericSchema<number>, bitmapSchema: Schema<D, number>);
63
+ /**
64
+ * Returns a variant that reserves the most-significant bit (it encodes NULL for nullable
65
+ * bitmaps, shrinking the usable range).
66
+ *
67
+ * @see {@link MatterSpecification.v16.Core} § 7.19.1.2
68
+ */
69
+ withReservedMsb(): BitmapWrapper<D>;
70
+ }
71
+ export declare const TlvBitmap: <T extends BitSchema>(underlyingSchema: TlvNumberSchema, bitSchema: T) => BitmapWrapper<TypeFromPartialBitSchema<T>>;
55
72
  export declare const TlvPercent: TlvNumericSchema<number>;
56
73
  export declare const TlvPercent100ths: TlvNumericSchema<number>;
57
74
  export declare const TlvPosixMs: TlvNumericSchema<number | bigint>;
@@ -1 +1 @@
1
- {"version":3,"file":"TlvNumber.d.ts","sourceRoot":"","sources":["../../../src/tlv/TlvNumber.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TlvNumber.d.ts","sourceRoot":"","sources":["../../../src/tlv/TlvNumber.ts"],"names":[],"mappings":"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"}
@@ -226,13 +226,32 @@ const TlvUInt64 = new TlvLongNumberSchema(
226
226
  UINT64_MAX
227
227
  );
228
228
  const TlvEnum = () => TlvUInt32;
229
+ class BitmapWrapper extends TlvWrapper {
230
+ constructor(numericSchema, bitmapSchema) {
231
+ super(
232
+ numericSchema,
233
+ (bitmapData) => bitmapSchema.encode(bitmapData),
234
+ (value) => bitmapSchema.decode(value)
235
+ );
236
+ this.numericSchema = numericSchema;
237
+ this.bitmapSchema = bitmapSchema;
238
+ }
239
+ numericSchema;
240
+ bitmapSchema;
241
+ /**
242
+ * Returns a variant that reserves the most-significant bit (it encodes NULL for nullable
243
+ * bitmaps, shrinking the usable range).
244
+ *
245
+ * @see {@link MatterSpecification.v16.Core} § 7.19.1.2
246
+ */
247
+ withReservedMsb() {
248
+ const { baseTypeMax } = this.numericSchema;
249
+ return new BitmapWrapper(this.numericSchema.bound({ max: Math.floor(baseTypeMax / 2) }), this.bitmapSchema);
250
+ }
251
+ }
229
252
  const TlvBitmap = (underlyingSchema, bitSchema) => {
230
253
  const bitmapSchema = BitmapSchema(bitSchema);
231
- return new TlvWrapper(
232
- underlyingSchema,
233
- (bitmapData) => bitmapSchema.encode(bitmapData),
234
- (value) => bitmapSchema.decode(value)
235
- );
254
+ return new BitmapWrapper(underlyingSchema, bitmapSchema);
236
255
  };
237
256
  const TlvPercent = TlvUInt8.bound({ max: 100 });
238
257
  const TlvPercent100ths = TlvUInt16.bound({ max: 1e4 });
@@ -281,6 +300,7 @@ const TlvEpochUs = new TlvWrapper(
281
300
  (epochUs) => BigInt(epochUs) + MATTER_EPOCH_OFFSET_US
282
301
  );
283
302
  export {
303
+ BitmapWrapper,
284
304
  MATTER_EPOCH_OFFSET,
285
305
  MATTER_EPOCH_OFFSET_S,
286
306
  MATTER_EPOCH_OFFSET_US,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/tlv/TlvNumber.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/types",
3
- "version": "0.17.2",
3
+ "version": "0.17.3-alpha.0-20260617-ea3690abc",
4
4
  "description": "Definitions for Matter application",
5
5
  "keywords": [
6
6
  "iot",
@@ -32,11 +32,11 @@
32
32
  "coverage": "c8 matter-test esm"
33
33
  },
34
34
  "dependencies": {
35
- "@matter/general": "0.17.2",
36
- "@matter/model": "0.17.2"
35
+ "@matter/general": "0.17.3-alpha.0-20260617-ea3690abc",
36
+ "@matter/model": "0.17.3-alpha.0-20260617-ea3690abc"
37
37
  },
38
38
  "devDependencies": {
39
- "@matter/testing": "0.17.2"
39
+ "@matter/testing": "0.17.3-alpha.0-20260617-ea3690abc"
40
40
  },
41
41
  "files": [
42
42
  "dist/**/*",
@@ -8,8 +8,7 @@ import { AttributeModel, ClusterModel, CommandModel, EventModel, Matter } from "
8
8
  import { ClusterId } from "../datatype/ClusterId.js";
9
9
  import { EndpointNumber } from "../datatype/EndpointNumber.js";
10
10
  import { NodeId } from "../datatype/NodeId.js";
11
- import { TlvAttributePath, TlvCommandPath, TlvEventPath } from "../protocol/index.js";
12
- import { TypeFromSchema } from "../tlv/TlvSchema.js";
11
+ import { AttributePath, CommandPath, EventPath } from "../protocol/index.js";
13
12
 
14
13
  function toHex(value: number | bigint | undefined) {
15
14
  return value === undefined ? "*" : `0x${value.toString(16)}`;
@@ -53,12 +52,7 @@ function resolveElementName(cluster: ClusterModel | undefined, tag: string, elem
53
52
  return undefined;
54
53
  }
55
54
 
56
- export function resolveAttributeName({
57
- nodeId,
58
- endpointId,
59
- clusterId,
60
- attributeId,
61
- }: TypeFromSchema<typeof TlvAttributePath>) {
55
+ export function resolveAttributeName({ nodeId, endpointId, clusterId, attributeId }: AttributePath) {
62
56
  const endpointClusterName = resolveEndpointClusterName(nodeId, endpointId, clusterId);
63
57
  if (endpointId === undefined || clusterId === undefined || attributeId === undefined) {
64
58
  return `${endpointClusterName}/${toHex(attributeId)}`;
@@ -71,13 +65,7 @@ export function resolveAttributeName({
71
65
  return `${endpointClusterName}/${name}(${toHex(attributeId)})`;
72
66
  }
73
67
 
74
- export function resolveEventName({
75
- nodeId,
76
- endpointId,
77
- clusterId,
78
- eventId,
79
- isUrgent,
80
- }: TypeFromSchema<typeof TlvEventPath>) {
68
+ export function resolveEventName({ nodeId, endpointId, clusterId, eventId, isUrgent }: EventPath) {
81
69
  const isUrgentStr = isUrgent ? "!" : "";
82
70
  const endpointClusterName = resolveEndpointClusterName(nodeId, endpointId, clusterId);
83
71
  if (endpointId === undefined || clusterId === undefined || eventId === undefined) {
@@ -91,7 +79,7 @@ export function resolveEventName({
91
79
  return `${isUrgentStr}${endpointClusterName}/${name}(${toHex(eventId)})`;
92
80
  }
93
81
 
94
- export function resolveCommandName({ endpointId, clusterId, commandId }: TypeFromSchema<typeof TlvCommandPath>) {
82
+ export function resolveCommandName({ endpointId, clusterId, commandId }: CommandPath) {
95
83
  const endpointClusterName = resolveEndpointClusterName(undefined, endpointId, clusterId);
96
84
  if (endpointId === undefined || clusterId === undefined || commandId === undefined) {
97
85
  return `${endpointClusterName}/${toHex(commandId)}`;
@@ -6,7 +6,7 @@
6
6
 
7
7
  import { Bytes, Duration } from "@matter/general";
8
8
  import { ProductDescription } from "../common/ProductDescription.js";
9
- import { CommissioningFlowType } from "../schema/PairingCodeSchema.js";
9
+ import { CommissioningFlowType, INVALID_PASSCODES } from "../schema/PairingCodeSchema.js";
10
10
 
11
11
  /**
12
12
  * Configuration for initial node commissioning.
@@ -14,9 +14,7 @@ import { CommissioningFlowType } from "../schema/PairingCodeSchema.js";
14
14
  export interface CommissioningOptions extends Partial<CommissioningOptions.Configuration> {}
15
15
 
16
16
  export namespace CommissioningOptions {
17
- export const FORBIDDEN_PASSCODES = [
18
- 0, 11111111, 22222222, 33333333, 44444444, 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321,
19
- ];
17
+ export const FORBIDDEN_PASSCODES = INVALID_PASSCODES;
20
18
 
21
19
  export interface Configuration {
22
20
  /**
@@ -4,7 +4,15 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { Bytes, deepCopy, ImplementationError, UnexpectedDataError, Verhoeff } from "@matter/general";
7
+ import {
8
+ Bytes,
9
+ CRYPTO_PBKDF_ITERATIONS_MAX,
10
+ CRYPTO_PBKDF_ITERATIONS_MIN,
11
+ deepCopy,
12
+ ImplementationError,
13
+ UnexpectedDataError,
14
+ Verhoeff,
15
+ } from "@matter/general";
8
16
  import { VendorId } from "../datatype/VendorId.js";
9
17
  import { TlvAny } from "../tlv/TlvAny.js";
10
18
  import { TlvType } from "../tlv/TlvCodec.js";
@@ -93,7 +101,10 @@ export type QrCodeData = TypeFromBitmapSchema<typeof QrCodeDataSchema> & {
93
101
  export const QrCodeTlvDataDefaultFields = {
94
102
  /** Device Serial # */
95
103
  serialNumber: TlvOptionalField(0x00, TlvAny), // can be TlvString with up to 32 bytes or Unsigned Int up to 8 bytes
96
- pbkdfIterations: TlvOptionalField(0x01, TlvUInt32.bound({ min: 1000, max: 100_000 })), // Or could also be UInt 16?
104
+ pbkdfIterations: TlvOptionalField(
105
+ 0x01,
106
+ TlvUInt32.bound({ min: CRYPTO_PBKDF_ITERATIONS_MIN, max: CRYPTO_PBKDF_ITERATIONS_MAX }),
107
+ ),
97
108
  pbkdfSalt: TlvOptionalField(0x02, TlvByteString.bound({ minLength: 16, maxLength: 32 })),
98
109
 
99
110
  /**
@@ -109,9 +120,59 @@ export const QrCodeTlvDataDefaultFields = {
109
120
  commissioningTimeout: TlvOptionalField(0x04, TlvUInt16),
110
121
  };
111
122
 
123
+ /**
124
+ * Inclusive lower bound of the valid passcode range `0x0000001..0x5F5E0FE`.
125
+ * See {@link MatterSpecification.v13.Core} § 5.1.1.6.
126
+ */
127
+ export const PASSCODE_MIN = 0x0000001;
128
+
129
+ /**
130
+ * Inclusive upper bound of the valid passcode range `0x0000001..0x5F5E0FE`.
131
+ * See {@link MatterSpecification.v13.Core} § 5.1.1.6.
132
+ */
133
+ export const PASSCODE_MAX = 0x5f5e0fe;
134
+
135
+ /**
136
+ * Trivial/insecure passcodes that SHALL NOT be used for PASE.
137
+ * See {@link MatterSpecification.v13.Core} § 5.1.7.1.
138
+ */
139
+ export const INVALID_PASSCODES: readonly number[] = [
140
+ 0, 11111111, 22222222, 33333333, 44444444, 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321,
141
+ ];
142
+
143
+ /**
144
+ * Returns true when the passcode is a valid setup passcode: within the {@link PASSCODE_MIN}..{@link PASSCODE_MAX} range
145
+ * and not one of the {@link INVALID_PASSCODES}. Mirrors CHIP's `PayloadContents::IsValidSetupPIN`.
146
+ *
147
+ * The onboarding codecs round-trip arbitrary 27-bit passcodes; use this to validate a decoded payload at parse time
148
+ * rather than deferring to the PASE layer. See {@link MatterSpecification.v13.Core} § 5.1.1.6 / § 5.1.7.1.
149
+ */
150
+ export function isValidPasscode(passcode: number): boolean {
151
+ return (
152
+ Number.isInteger(passcode) &&
153
+ passcode >= PASSCODE_MIN &&
154
+ passcode <= PASSCODE_MAX &&
155
+ !INVALID_PASSCODES.includes(passcode)
156
+ );
157
+ }
158
+
159
+ /** Throws {@link UnexpectedDataError} when {@link isValidPasscode} returns false. */
160
+ export function assertValidPasscode(passcode: number): void {
161
+ if (!isValidPasscode(passcode)) {
162
+ throw new UnexpectedDataError(`Invalid passcode ${passcode}`);
163
+ }
164
+ }
165
+
112
166
  const PREFIX = "MT:";
113
167
 
114
168
  class QrPairingCodeSchema extends Schema<QrCodeData[], string> {
169
+ /** Rejects payloads carrying an invalid passcode per § 5.1.1.6 / § 5.1.7.1. */
170
+ override validate(payloadData: QrCodeData[]): void {
171
+ for (const { passcode } of payloadData) {
172
+ assertValidPasscode(passcode);
173
+ }
174
+ }
175
+
115
176
  protected encodeInternal(payloadData: QrCodeData[]): string {
116
177
  if (payloadData.length === 0) throw new ImplementationError("Provided Payload data is empty");
117
178
  const result =
@@ -221,6 +282,11 @@ export type ManualPairingData = {
221
282
 
222
283
  /** See {@link MatterSpecification.v10.Core} § 5.1.4.1 Table 38/39/40 */
223
284
  class ManualPairingCodeSchema extends Schema<ManualPairingData, string> {
285
+ /** Rejects payloads carrying an invalid passcode per § 5.1.1.6 / § 5.1.7.1. */
286
+ override validate({ passcode }: ManualPairingData): void {
287
+ assertValidPasscode(passcode);
288
+ }
289
+
224
290
  protected encodeInternal({ discriminator, passcode, vendorId, productId }: ManualPairingData): string {
225
291
  if (discriminator === undefined) throw new UnexpectedDataError("discriminator is required");
226
292
  if (discriminator > 4095) throw new UnexpectedDataError("discriminator value must be less than 4096");
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { TlvNumericSchema } from "#tlv/TlvNumber.js";
7
+ import { BitmapWrapper, TlvNumericSchema } from "#tlv/TlvNumber.js";
8
8
  import { ArraySchema } from "./TlvArray.js";
9
9
  import { TlvTag, TlvType, TlvTypeLength } from "./TlvCodec.js";
10
10
  import { TlvEncodingOptions, TlvReader, TlvSchema, TlvWriter } from "./TlvSchema.js";
@@ -40,6 +40,9 @@ export class NullableSchema<T> extends TlvSchema<T | null> {
40
40
  schema = schema.bound({ min: schema.baseTypeMin + BigInt(1), max: schema.max });
41
41
  }
42
42
  }
43
+ } else if (schema instanceof BitmapWrapper) {
44
+ // Nullable bitmaps reserve the most-significant bit to encode null.
45
+ schema = schema.withReservedMsb();
43
46
  }
44
47
  this.schema = schema;
45
48
  }
@@ -273,6 +273,34 @@ export const TlvUInt64 = new TlvLongNumberSchema(
273
273
  // We use internally 32bit here - in fact encoding is done by real value length anyway
274
274
  export const TlvEnum = <T>() => TlvUInt32 as TlvSchema<number> as TlvSchema<T>;
275
275
 
276
+ /**
277
+ * TLV wrapper for a bitmap. Tracks the underlying numeric schema and the bit schema so a nullable
278
+ * variant can reserve the most-significant bit per spec.
279
+ */
280
+ export class BitmapWrapper<D> extends TlvWrapper<D, number> {
281
+ constructor(
282
+ readonly numericSchema: TlvNumericSchema<number>,
283
+ private readonly bitmapSchema: Schema<D, number>,
284
+ ) {
285
+ super(
286
+ numericSchema,
287
+ bitmapData => bitmapSchema.encode(bitmapData),
288
+ value => bitmapSchema.decode(value),
289
+ );
290
+ }
291
+
292
+ /**
293
+ * Returns a variant that reserves the most-significant bit (it encodes NULL for nullable
294
+ * bitmaps, shrinking the usable range).
295
+ *
296
+ * @see {@link MatterSpecification.v16.Core} § 7.19.1.2
297
+ */
298
+ withReservedMsb(): BitmapWrapper<D> {
299
+ const { baseTypeMax } = this.numericSchema;
300
+ return new BitmapWrapper(this.numericSchema.bound({ max: Math.floor(baseTypeMax / 2) }), this.bitmapSchema);
301
+ }
302
+ }
303
+
276
304
  export const TlvBitmap = <T extends BitSchema>(underlyingSchema: TlvNumberSchema, bitSchema: T) => {
277
305
  // BitmapSchema supports encoding partial bit schemas but specifies its
278
306
  // type as TypeFromBitSchema. Changing to TypeFromPartialBitSchema there
@@ -284,11 +312,7 @@ export const TlvBitmap = <T extends BitSchema>(underlyingSchema: TlvNumberSchema
284
312
  // only used in places where we want to support partial bitmaps.
285
313
  const bitmapSchema = BitmapSchema(bitSchema) as Schema<TypeFromPartialBitSchema<T>, number>;
286
314
 
287
- return new TlvWrapper(
288
- underlyingSchema,
289
- (bitmapData: TypeFromPartialBitSchema<T>) => bitmapSchema.encode(bitmapData),
290
- value => bitmapSchema.decode(value),
291
- );
315
+ return new BitmapWrapper(underlyingSchema, bitmapSchema);
292
316
  };
293
317
 
294
318
  // Relative Number types