@matter/protocol 0.16.0-alpha.0-20250930-05e6cc3f8 → 0.16.0-alpha.0-20251003-dc6d5523d

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 (173) hide show
  1. package/dist/cjs/action/client/ReadScope.d.ts +4 -0
  2. package/dist/cjs/action/client/ReadScope.d.ts.map +1 -1
  3. package/dist/cjs/action/client/ReadScope.js +2 -1
  4. package/dist/cjs/action/client/ReadScope.js.map +1 -1
  5. package/dist/cjs/ble/Ble.d.ts +3 -3
  6. package/dist/cjs/ble/Ble.d.ts.map +1 -1
  7. package/dist/cjs/ble/Ble.js.map +1 -1
  8. package/dist/cjs/common/Scanner.d.ts +2 -2
  9. package/dist/cjs/common/Scanner.d.ts.map +1 -1
  10. package/dist/cjs/interaction/AttributeDataDecoder.d.ts +9 -7
  11. package/dist/cjs/interaction/AttributeDataDecoder.d.ts.map +1 -1
  12. package/dist/cjs/interaction/AttributeDataDecoder.js.map +1 -1
  13. package/dist/cjs/interaction/DecodedDataReport.d.ts +1 -0
  14. package/dist/cjs/interaction/DecodedDataReport.d.ts.map +1 -1
  15. package/dist/cjs/interaction/DecodedDataReport.js.map +1 -1
  16. package/dist/cjs/interaction/InteractionClient.d.ts +13 -3
  17. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
  18. package/dist/cjs/interaction/InteractionClient.js +94 -67
  19. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  20. package/dist/cjs/interaction/InteractionMessenger.d.ts +10 -90
  21. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
  22. package/dist/cjs/interaction/InteractionMessenger.js +98 -22
  23. package/dist/cjs/interaction/InteractionMessenger.js.map +2 -2
  24. package/dist/cjs/interaction/SubscriptionClient.d.ts +2 -2
  25. package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
  26. package/dist/cjs/interaction/SubscriptionClient.js +1 -1
  27. package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
  28. package/dist/cjs/mdns/MdnsClient.d.ts +3 -3
  29. package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -1
  30. package/dist/cjs/peer/ControllerCommissioner.d.ts +2 -2
  31. package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
  32. package/dist/cjs/peer/ControllerCommissioner.js +7 -5
  33. package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
  34. package/dist/cjs/peer/OperationalPeer.d.ts +2 -2
  35. package/dist/cjs/peer/OperationalPeer.d.ts.map +1 -1
  36. package/dist/cjs/peer/PeerAddressStore.d.ts +3 -1
  37. package/dist/cjs/peer/PeerAddressStore.d.ts.map +1 -1
  38. package/dist/cjs/peer/PeerAddressStore.js.map +1 -1
  39. package/dist/cjs/peer/PeerSet.d.ts +3 -3
  40. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  41. package/dist/cjs/peer/PeerSet.js +14 -9
  42. package/dist/cjs/peer/PeerSet.js.map +1 -1
  43. package/dist/cjs/protocol/ExchangeManager.d.ts +2 -2
  44. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  45. package/dist/cjs/protocol/ExchangeManager.js +21 -17
  46. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  47. package/dist/cjs/protocol/MessageChannel.d.ts +1 -1
  48. package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
  49. package/dist/cjs/protocol/MessageChannel.js +7 -5
  50. package/dist/cjs/protocol/MessageChannel.js.map +1 -1
  51. package/dist/cjs/protocol/MessageExchange.d.ts +0 -1
  52. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  53. package/dist/cjs/protocol/MessageExchange.js +6 -17
  54. package/dist/cjs/protocol/MessageExchange.js.map +1 -1
  55. package/dist/cjs/session/NodeSession.d.ts.map +1 -1
  56. package/dist/cjs/session/NodeSession.js +3 -3
  57. package/dist/cjs/session/NodeSession.js.map +1 -1
  58. package/dist/cjs/session/SessionIntervals.d.ts +1 -5
  59. package/dist/cjs/session/SessionIntervals.d.ts.map +1 -1
  60. package/dist/cjs/session/SessionIntervals.js.map +1 -1
  61. package/dist/cjs/session/case/CaseMessages.d.ts +18 -9
  62. package/dist/cjs/session/case/CaseMessages.d.ts.map +1 -1
  63. package/dist/cjs/session/case/CaseMessages.js.map +1 -1
  64. package/dist/cjs/session/case/CaseMessenger.d.ts +4 -62
  65. package/dist/cjs/session/case/CaseMessenger.d.ts.map +1 -1
  66. package/dist/cjs/session/case/CaseMessenger.js.map +1 -1
  67. package/dist/cjs/session/case/CaseServer.js.map +1 -1
  68. package/dist/cjs/session/pase/PaseMessages.d.ts +20 -9
  69. package/dist/cjs/session/pase/PaseMessages.d.ts.map +1 -1
  70. package/dist/cjs/session/pase/PaseMessages.js +3 -3
  71. package/dist/cjs/session/pase/PaseMessages.js.map +1 -1
  72. package/dist/cjs/session/pase/PaseMessenger.d.ts +3 -51
  73. package/dist/cjs/session/pase/PaseMessenger.d.ts.map +1 -1
  74. package/dist/cjs/session/pase/PaseMessenger.js.map +1 -1
  75. package/dist/esm/action/client/ReadScope.d.ts +4 -0
  76. package/dist/esm/action/client/ReadScope.d.ts.map +1 -1
  77. package/dist/esm/action/client/ReadScope.js +2 -1
  78. package/dist/esm/action/client/ReadScope.js.map +1 -1
  79. package/dist/esm/ble/Ble.d.ts +3 -3
  80. package/dist/esm/ble/Ble.d.ts.map +1 -1
  81. package/dist/esm/ble/Ble.js.map +1 -1
  82. package/dist/esm/common/Scanner.d.ts +2 -2
  83. package/dist/esm/common/Scanner.d.ts.map +1 -1
  84. package/dist/esm/interaction/AttributeDataDecoder.d.ts +9 -7
  85. package/dist/esm/interaction/AttributeDataDecoder.d.ts.map +1 -1
  86. package/dist/esm/interaction/AttributeDataDecoder.js.map +1 -1
  87. package/dist/esm/interaction/DecodedDataReport.d.ts +1 -0
  88. package/dist/esm/interaction/DecodedDataReport.d.ts.map +1 -1
  89. package/dist/esm/interaction/DecodedDataReport.js.map +1 -1
  90. package/dist/esm/interaction/InteractionClient.d.ts +13 -3
  91. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  92. package/dist/esm/interaction/InteractionClient.js +96 -68
  93. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  94. package/dist/esm/interaction/InteractionMessenger.d.ts +10 -90
  95. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
  96. package/dist/esm/interaction/InteractionMessenger.js +98 -22
  97. package/dist/esm/interaction/InteractionMessenger.js.map +2 -2
  98. package/dist/esm/interaction/SubscriptionClient.d.ts +2 -2
  99. package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
  100. package/dist/esm/interaction/SubscriptionClient.js +1 -1
  101. package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
  102. package/dist/esm/mdns/MdnsClient.d.ts +3 -3
  103. package/dist/esm/mdns/MdnsClient.d.ts.map +1 -1
  104. package/dist/esm/peer/ControllerCommissioner.d.ts +2 -2
  105. package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
  106. package/dist/esm/peer/ControllerCommissioner.js +9 -6
  107. package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
  108. package/dist/esm/peer/OperationalPeer.d.ts +2 -2
  109. package/dist/esm/peer/OperationalPeer.d.ts.map +1 -1
  110. package/dist/esm/peer/PeerAddressStore.d.ts +3 -1
  111. package/dist/esm/peer/PeerAddressStore.d.ts.map +1 -1
  112. package/dist/esm/peer/PeerAddressStore.js.map +1 -1
  113. package/dist/esm/peer/PeerSet.d.ts +3 -3
  114. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  115. package/dist/esm/peer/PeerSet.js +15 -10
  116. package/dist/esm/peer/PeerSet.js.map +1 -1
  117. package/dist/esm/protocol/ExchangeManager.d.ts +2 -2
  118. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  119. package/dist/esm/protocol/ExchangeManager.js +22 -18
  120. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  121. package/dist/esm/protocol/MessageChannel.d.ts +1 -1
  122. package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
  123. package/dist/esm/protocol/MessageChannel.js +7 -5
  124. package/dist/esm/protocol/MessageChannel.js.map +1 -1
  125. package/dist/esm/protocol/MessageExchange.d.ts +0 -1
  126. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  127. package/dist/esm/protocol/MessageExchange.js +6 -17
  128. package/dist/esm/protocol/MessageExchange.js.map +1 -1
  129. package/dist/esm/session/NodeSession.d.ts.map +1 -1
  130. package/dist/esm/session/NodeSession.js +4 -3
  131. package/dist/esm/session/NodeSession.js.map +1 -1
  132. package/dist/esm/session/SessionIntervals.d.ts +1 -5
  133. package/dist/esm/session/SessionIntervals.d.ts.map +1 -1
  134. package/dist/esm/session/SessionIntervals.js.map +1 -1
  135. package/dist/esm/session/case/CaseMessages.d.ts +18 -9
  136. package/dist/esm/session/case/CaseMessages.d.ts.map +1 -1
  137. package/dist/esm/session/case/CaseMessages.js.map +1 -1
  138. package/dist/esm/session/case/CaseMessenger.d.ts +4 -62
  139. package/dist/esm/session/case/CaseMessenger.d.ts.map +1 -1
  140. package/dist/esm/session/case/CaseMessenger.js +6 -1
  141. package/dist/esm/session/case/CaseMessenger.js.map +1 -1
  142. package/dist/esm/session/case/CaseServer.js.map +1 -1
  143. package/dist/esm/session/pase/PaseMessages.d.ts +20 -9
  144. package/dist/esm/session/pase/PaseMessages.d.ts.map +1 -1
  145. package/dist/esm/session/pase/PaseMessages.js +3 -3
  146. package/dist/esm/session/pase/PaseMessages.js.map +1 -1
  147. package/dist/esm/session/pase/PaseMessenger.d.ts +3 -51
  148. package/dist/esm/session/pase/PaseMessenger.d.ts.map +1 -1
  149. package/dist/esm/session/pase/PaseMessenger.js.map +1 -1
  150. package/package.json +6 -6
  151. package/src/action/client/ReadScope.ts +7 -0
  152. package/src/ble/Ble.ts +3 -3
  153. package/src/common/Scanner.ts +2 -2
  154. package/src/interaction/AttributeDataDecoder.ts +4 -1
  155. package/src/interaction/DecodedDataReport.ts +1 -0
  156. package/src/interaction/InteractionClient.ts +154 -79
  157. package/src/interaction/InteractionMessenger.ts +126 -22
  158. package/src/interaction/SubscriptionClient.ts +6 -5
  159. package/src/mdns/MdnsClient.ts +4 -4
  160. package/src/peer/ControllerCommissioner.ts +10 -7
  161. package/src/peer/OperationalPeer.ts +2 -2
  162. package/src/peer/PeerAddressStore.ts +3 -1
  163. package/src/peer/PeerSet.ts +23 -18
  164. package/src/protocol/ExchangeManager.ts +29 -21
  165. package/src/protocol/MessageChannel.ts +13 -11
  166. package/src/protocol/MessageExchange.ts +6 -18
  167. package/src/session/NodeSession.ts +4 -3
  168. package/src/session/SessionIntervals.ts +1 -1
  169. package/src/session/case/CaseMessages.ts +12 -2
  170. package/src/session/case/CaseMessenger.ts +12 -4
  171. package/src/session/case/CaseServer.ts +5 -5
  172. package/src/session/pase/PaseMessages.ts +27 -3
  173. package/src/session/pase/PaseMessenger.ts +8 -9
@@ -10,8 +10,8 @@ import {
10
10
  CRYPTO_HASH_LEN_BYTES,
11
11
  CRYPTO_PUBLIC_KEY_SIZE_BYTES,
12
12
  } from "#general";
13
- import { TlvByteString, TlvField, TlvObject, TlvOptionalField, TlvUInt16 } from "#types";
14
- import { TlvSessionParameters } from "../pase/PaseMessages.js";
13
+ import { TlvByteString, TlvField, TlvObject, TlvOptionalField, TlvUInt16, TypeFromSchema } from "#types";
14
+ import { TlvSessionParameters, WithDurationSessionParameters } from "../pase/PaseMessages.js";
15
15
 
16
16
  const CASE_SIGNATURE_LENGTH = CRYPTO_GROUP_SIZE_BYTES * 2;
17
17
 
@@ -34,6 +34,7 @@ export const TlvCaseSigma1 = TlvObject({
34
34
  resumptionId: TlvOptionalField(6, TlvByteString.bound({ length: 16 })),
35
35
  initiatorResumeMic: TlvOptionalField(7, TlvByteString.bound({ length: CRYPTO_AEAD_MIC_LENGTH_BYTES })),
36
36
  });
37
+ export type CaseSigma1 = WithDurationSessionParameters<TypeFromSchema<typeof TlvCaseSigma1>, "initiatorSessionParams">;
37
38
 
38
39
  /** @see {@link MatterSpecification.v13.Core} § 4.14.2.3 */
39
40
  export const TlvCaseSigma2 = TlvObject({
@@ -43,6 +44,7 @@ export const TlvCaseSigma2 = TlvObject({
43
44
  encrypted: TlvField(4, TlvByteString),
44
45
  responderSessionParams: TlvOptionalField(5, TlvSessionParameters),
45
46
  });
47
+ export type CaseSigma2 = WithDurationSessionParameters<TypeFromSchema<typeof TlvCaseSigma2>, "responderSessionParams">;
46
48
 
47
49
  /** @see {@link MatterSpecification.v13.Core} § 4.14.2.3 */
48
50
  export const TlvCaseSigma2Resume = TlvObject({
@@ -51,11 +53,16 @@ export const TlvCaseSigma2Resume = TlvObject({
51
53
  responderSessionId: TlvField(3, TlvUInt16),
52
54
  responderSessionParams: TlvOptionalField(4, TlvSessionParameters),
53
55
  });
56
+ export type CaseSigma2Resume = WithDurationSessionParameters<
57
+ TypeFromSchema<typeof TlvCaseSigma2Resume>,
58
+ "responderSessionParams"
59
+ >;
54
60
 
55
61
  /** @see {@link MatterSpecification.v13.Core} § 4.14.2.3 */
56
62
  export const TlvCaseSigma3 = TlvObject({
57
63
  encrypted: TlvField(1, TlvByteString),
58
64
  });
65
+ export type CaseSigma3 = TypeFromSchema<typeof TlvCaseSigma3>;
59
66
 
60
67
  /** @see {@link MatterSpecification.v10.Core} § 4.13.2.3 */
61
68
  export const TlvSignedData = TlvObject({
@@ -64,6 +71,7 @@ export const TlvSignedData = TlvObject({
64
71
  responderPublicKey: TlvField(3, TlvByteString.bound({ length: CRYPTO_PUBLIC_KEY_SIZE_BYTES })),
65
72
  initiatorPublicKey: TlvField(4, TlvByteString.bound({ length: CRYPTO_PUBLIC_KEY_SIZE_BYTES })),
66
73
  });
74
+ export type SignedData = TypeFromSchema<typeof TlvSignedData>;
67
75
 
68
76
  /** @see {@link MatterSpecification.v10.Core} § 4.13.2.3 */
69
77
  export const TlvEncryptedDataSigma2 = TlvObject({
@@ -72,6 +80,7 @@ export const TlvEncryptedDataSigma2 = TlvObject({
72
80
  signature: TlvField(3, TlvByteString.bound({ length: CASE_SIGNATURE_LENGTH })),
73
81
  resumptionId: TlvField(4, TlvByteString.bound({ length: 16 })),
74
82
  });
83
+ export type EncryptedDataSigma2 = TypeFromSchema<typeof TlvEncryptedDataSigma2>;
75
84
 
76
85
  /** @see {@link MatterSpecification.v10.Core} § 4.13.2.3 */
77
86
  export const TlvEncryptedDataSigma3 = TlvObject({
@@ -79,3 +88,4 @@ export const TlvEncryptedDataSigma3 = TlvObject({
79
88
  responderIcac: TlvOptionalField(2, TlvByteString),
80
89
  signature: TlvField(3, TlvByteString.bound({ length: CASE_SIGNATURE_LENGTH })),
81
90
  });
91
+ export type EncryptedDataSigma3 = TypeFromSchema<typeof TlvEncryptedDataSigma3>;
@@ -7,12 +7,20 @@
7
7
  import { MatterFlowError } from "#general";
8
8
  import { SecureMessageType, TypeFromSchema } from "#types";
9
9
  import { SecureChannelMessenger } from "../../securechannel/SecureChannelMessenger.js";
10
- import { TlvCaseSigma1, TlvCaseSigma2, TlvCaseSigma2Resume, TlvCaseSigma3 } from "./CaseMessages.js";
10
+ import {
11
+ CaseSigma1,
12
+ CaseSigma2,
13
+ CaseSigma2Resume,
14
+ TlvCaseSigma1,
15
+ TlvCaseSigma2,
16
+ TlvCaseSigma2Resume,
17
+ TlvCaseSigma3,
18
+ } from "./CaseMessages.js";
11
19
 
12
20
  export class CaseServerMessenger extends SecureChannelMessenger {
13
21
  async readSigma1() {
14
22
  const { payload } = await this.nextMessage(SecureMessageType.Sigma1);
15
- return { sigma1Bytes: payload, sigma1: TlvCaseSigma1.decode(payload) };
23
+ return { sigma1Bytes: payload, sigma1: TlvCaseSigma1.decode(payload) as CaseSigma1 };
16
24
  }
17
25
 
18
26
  sendSigma2(sigma2: TypeFromSchema<typeof TlvCaseSigma2>) {
@@ -41,9 +49,9 @@ export class CaseClientMessenger extends SecureChannelMessenger {
41
49
  } = await this.anyNextMessage("Sigma2(Resume)");
42
50
  switch (messageType) {
43
51
  case SecureMessageType.Sigma2:
44
- return { sigma2Bytes: payload, sigma2: TlvCaseSigma2.decode(payload) };
52
+ return { sigma2Bytes: payload, sigma2: TlvCaseSigma2.decode(payload) as CaseSigma2 };
45
53
  case SecureMessageType.Sigma2Resume:
46
- return { sigma2Resume: TlvCaseSigma2Resume.decode(payload) };
54
+ return { sigma2Resume: TlvCaseSigma2Resume.decode(payload) as CaseSigma2Resume };
47
55
  default:
48
56
  throw new MatterFlowError(
49
57
  `Received unexpected message type while expecting CASE Sigma2(Resume): ${messageType}, expected: ${SecureMessageType.Sigma2} or ${SecureMessageType.Sigma2Resume}`,
@@ -6,14 +6,15 @@
6
6
 
7
7
  import { Noc } from "#certificate/kinds/Noc.js";
8
8
  import { Bytes, Crypto, CryptoDecryptError, Logger, PublicKey, UnexpectedDataError } from "#general";
9
- import { TlvSessionParameters } from "#session/pase/PaseMessages.js";
9
+ import { SessionParametersWithDurations } from "#session/pase/PaseMessages.js";
10
10
  import { ResumptionRecord, SessionManager } from "#session/SessionManager.js";
11
- import { NodeId, SECURE_CHANNEL_PROTOCOL_ID, SecureChannelStatusCode, TypeFromSchema } from "#types";
11
+ import { NodeId, SECURE_CHANNEL_PROTOCOL_ID, SecureChannelStatusCode } from "#types";
12
12
  import { FabricManager, FabricNotFoundError } from "../../fabric/FabricManager.js";
13
13
  import { MessageExchange } from "../../protocol/MessageExchange.js";
14
14
  import { ProtocolHandler } from "../../protocol/ProtocolHandler.js";
15
15
  import { ChannelStatusResponseError } from "../../securechannel/SecureChannelMessenger.js";
16
16
  import {
17
+ CaseSigma1,
17
18
  KDFSR1_KEY_INFO,
18
19
  KDFSR2_INFO,
19
20
  KDFSR2_KEY_INFO,
@@ -22,7 +23,6 @@ import {
22
23
  RESUME2_MIC_NONCE,
23
24
  TBE_DATA2_NONCE,
24
25
  TBE_DATA3_NONCE,
25
- TlvCaseSigma1,
26
26
  TlvEncryptedDataSigma2,
27
27
  TlvEncryptedDataSigma3,
28
28
  TlvSignedData,
@@ -313,7 +313,7 @@ class Sigma1Context {
313
313
  destinationId: Bytes;
314
314
  peerRandom: Bytes;
315
315
  peerEcdhPublicKey: Bytes;
316
- peerSessionParams?: TypeFromSchema<typeof TlvSessionParameters>;
316
+ peerSessionParams?: SessionParametersWithDurations;
317
317
  resumptionRecord?: ResumptionRecord;
318
318
 
319
319
  #localResumptionId?: Bytes;
@@ -322,7 +322,7 @@ class Sigma1Context {
322
322
  crypto: Crypto,
323
323
  messenger: CaseServerMessenger,
324
324
  bytes: Bytes,
325
- sigma1: TypeFromSchema<typeof TlvCaseSigma1>,
325
+ sigma1: CaseSigma1,
326
326
  resumptionRecord?: ResumptionRecord,
327
327
  ) {
328
328
  this.crypto = crypto;
@@ -6,6 +6,7 @@
6
6
 
7
7
  import { SupportedTransportsBitmap } from "#common/SupportedTransportsBitmap.js";
8
8
  import { CRYPTO_HASH_LEN_BYTES, CRYPTO_PUBLIC_KEY_SIZE_BYTES } from "#general";
9
+ import { SessionIntervals } from "#session/SessionIntervals.js";
9
10
  import {
10
11
  TlvBitmap,
11
12
  TlvBoolean,
@@ -15,18 +16,19 @@ import {
15
16
  TlvOptionalField,
16
17
  TlvUInt16,
17
18
  TlvUInt32,
19
+ TypeFromSchema,
18
20
  } from "#types";
19
21
 
20
22
  /** @see {@link MatterSpecification.v13.Core} § 4.12.8 */
21
23
  export const TlvSessionParameters = TlvObject({
22
24
  /** Maximum sleep interval of node when in idle mode. */
23
- idleIntervalMs: TlvOptionalField(1, TlvUInt32) /* default: SESSION_IDLE_INTERVAL */,
25
+ idleInterval: TlvOptionalField(1, TlvUInt32) /* default: SESSION_IDLE_INTERVAL */,
24
26
 
25
27
  /** Maximum sleep interval of node when in active mode. */
26
- activeIntervalMs: TlvOptionalField(2, TlvUInt32) /* default: SESSION_ACTIVE_INTERVAL */,
28
+ activeInterval: TlvOptionalField(2, TlvUInt32) /* default: SESSION_ACTIVE_INTERVAL */,
27
29
 
28
30
  /** Minimum amount of time the node SHOULD stay active after network activity. */
29
- activeThresholdMs: TlvOptionalField(3, TlvUInt16) /* default: SESSION_ACTIVE_THRESHOLD */,
31
+ activeThreshold: TlvOptionalField(3, TlvUInt16) /* default: SESSION_ACTIVE_THRESHOLD */,
30
32
 
31
33
  /** Data model revision. */
32
34
  dataModelRevision: TlvOptionalField(4, TlvUInt16) /* default: 16 OR 17, we choose 17 aka Matter 1.2 */,
@@ -47,6 +49,17 @@ export const TlvSessionParameters = TlvObject({
47
49
  maxTcpMessageSize: TlvOptionalField(9, TlvUInt32) /* default: 64000 */,
48
50
  });
49
51
 
52
+ // Replace the interval fields with Duration-typed fields in the exported type
53
+ export type SessionParametersWithDurations = Omit<
54
+ TypeFromSchema<typeof TlvSessionParameters>,
55
+ "activeThreshold" | "activeInterval" | "idleInterval"
56
+ > &
57
+ Partial<SessionIntervals>;
58
+
59
+ export type WithDurationSessionParameters<T, K extends keyof T> = Omit<T, K> & {
60
+ [P in K]?: SessionParametersWithDurations;
61
+ };
62
+
50
63
  /** @see {@link MatterSpecification.v13.Core} § 4.14.1.2 */
51
64
  export const TlvPbkdfParamRequest = TlvObject({
52
65
  initiatorRandom: TlvField(1, TlvByteString.bound({ length: 32 })),
@@ -55,6 +68,10 @@ export const TlvPbkdfParamRequest = TlvObject({
55
68
  hasPbkdfParameters: TlvField(4, TlvBoolean),
56
69
  initiatorSessionParams: TlvOptionalField(5, TlvSessionParameters),
57
70
  });
71
+ export type PbkdfParamRequest = WithDurationSessionParameters<
72
+ TypeFromSchema<typeof TlvPbkdfParamRequest>,
73
+ "initiatorSessionParams"
74
+ >;
58
75
 
59
76
  /** @see {@link MatterSpecification.v13.Core} § 4.14.1.2 */
60
77
  export const TlvPbkdfParamResponse = TlvObject({
@@ -70,19 +87,26 @@ export const TlvPbkdfParamResponse = TlvObject({
70
87
  ),
71
88
  responderSessionParams: TlvOptionalField(5, TlvSessionParameters),
72
89
  });
90
+ export type PbkdfParamResponse = WithDurationSessionParameters<
91
+ TypeFromSchema<typeof TlvPbkdfParamResponse>,
92
+ "responderSessionParams"
93
+ >;
73
94
 
74
95
  /** @see {@link MatterSpecification.v13.Core} § 4.14.1.2 */
75
96
  export const TlvPasePake1 = TlvObject({
76
97
  x: TlvField(1, TlvByteString.bound({ length: CRYPTO_PUBLIC_KEY_SIZE_BYTES })), // pA
77
98
  });
99
+ export type PasePake1 = TypeFromSchema<typeof TlvPasePake1>;
78
100
 
79
101
  /** @see {@link MatterSpecification.v13.Core} § 4.14.1.2 */
80
102
  export const TlvPasePake2 = TlvObject({
81
103
  y: TlvField(1, TlvByteString.bound({ length: CRYPTO_PUBLIC_KEY_SIZE_BYTES })), // pB
82
104
  verifier: TlvField(2, TlvByteString.bound({ length: CRYPTO_HASH_LEN_BYTES })), // cB
83
105
  });
106
+ export type PasePake2 = TypeFromSchema<typeof TlvPasePake2>;
84
107
 
85
108
  /** @see {@link MatterSpecification.v13.Core} § 4.14.1.2 */
86
109
  export const TlvPasePake3 = TlvObject({
87
110
  verifier: TlvField(1, TlvByteString.bound({ length: CRYPTO_HASH_LEN_BYTES })), // cA
88
111
  });
112
+ export type PasePake3 = TypeFromSchema<typeof TlvPasePake3>;
@@ -5,9 +5,14 @@
5
5
  */
6
6
 
7
7
  import { Bytes } from "#general";
8
- import { SecureMessageType, TypeFromSchema } from "#types";
8
+ import { SecureMessageType } from "#types";
9
9
  import { DEFAULT_NORMAL_PROCESSING_TIME, SecureChannelMessenger } from "../../securechannel/SecureChannelMessenger.js";
10
10
  import {
11
+ PasePake1,
12
+ PasePake2,
13
+ PasePake3,
14
+ PbkdfParamRequest,
15
+ PbkdfParamResponse,
11
16
  TlvPasePake1,
12
17
  TlvPasePake2,
13
18
  TlvPasePake3,
@@ -18,16 +23,10 @@ import {
18
23
  export const DEFAULT_PASSCODE_ID = 0;
19
24
  export const SPAKE_CONTEXT = Bytes.fromString("CHIP PAKE V1 Commissioning");
20
25
 
21
- type PbkdfParamRequest = TypeFromSchema<typeof TlvPbkdfParamRequest>;
22
- type PbkdfParamResponse = TypeFromSchema<typeof TlvPbkdfParamResponse>;
23
- type PasePake1 = TypeFromSchema<typeof TlvPasePake1>;
24
- type PasePake2 = TypeFromSchema<typeof TlvPasePake2>;
25
- type PasePake3 = TypeFromSchema<typeof TlvPasePake3>;
26
-
27
26
  export class PaseServerMessenger extends SecureChannelMessenger {
28
27
  async readPbkdfParamRequest() {
29
28
  const { payload } = await this.nextMessage(SecureMessageType.PbkdfParamRequest, DEFAULT_NORMAL_PROCESSING_TIME);
30
- return { requestPayload: payload, request: TlvPbkdfParamRequest.decode(payload) };
29
+ return { requestPayload: payload, request: TlvPbkdfParamRequest.decode(payload) as PbkdfParamRequest };
31
30
  }
32
31
 
33
32
  async sendPbkdfParamResponse(response: PbkdfParamResponse) {
@@ -61,7 +60,7 @@ export class PaseClientMessenger extends SecureChannelMessenger {
61
60
  SecureMessageType.PbkdfParamResponse,
62
61
  DEFAULT_NORMAL_PROCESSING_TIME,
63
62
  );
64
- return { responsePayload: payload, response: TlvPbkdfParamResponse.decode(payload) };
63
+ return { responsePayload: payload, response: TlvPbkdfParamResponse.decode(payload) as PbkdfParamResponse };
65
64
  }
66
65
 
67
66
  sendPasePake1(pasePake1: PasePake1) {