@matter/protocol 0.12.6-alpha.0-20250304-03716637c → 0.13.0-alpha.0-20250304-d4a7592a4

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 (80) hide show
  1. package/dist/cjs/common/Scanner.d.ts +25 -1
  2. package/dist/cjs/common/Scanner.d.ts.map +1 -1
  3. package/dist/cjs/common/Scanner.js +18 -1
  4. package/dist/cjs/common/Scanner.js.map +1 -1
  5. package/dist/cjs/mdns/MdnsBroadcaster.js +3 -3
  6. package/dist/cjs/mdns/MdnsConsts.d.ts.map +1 -1
  7. package/dist/cjs/mdns/MdnsScanner.d.ts.map +1 -1
  8. package/dist/cjs/mdns/MdnsScanner.js +1 -1
  9. package/dist/cjs/mdns/MdnsScanner.js.map +1 -1
  10. package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  11. package/dist/cjs/peer/ControllerCommissioningFlow.js +55 -55
  12. package/dist/cjs/peer/ControllerCommissioningFlow.js.map +1 -1
  13. package/dist/cjs/session/Session.d.ts +33 -1
  14. package/dist/cjs/session/Session.d.ts.map +1 -1
  15. package/dist/cjs/session/Session.js +16 -3
  16. package/dist/cjs/session/Session.js.map +1 -1
  17. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  18. package/dist/cjs/session/SessionManager.js +14 -4
  19. package/dist/cjs/session/SessionManager.js.map +1 -1
  20. package/dist/cjs/session/case/CaseMessages.d.ts +15 -0
  21. package/dist/cjs/session/case/CaseMessages.d.ts.map +1 -1
  22. package/dist/cjs/session/case/CaseMessenger.d.ts +15 -0
  23. package/dist/cjs/session/case/CaseMessenger.d.ts.map +1 -1
  24. package/dist/cjs/session/pase/PaseClient.d.ts.map +1 -1
  25. package/dist/cjs/session/pase/PaseClient.js +7 -1
  26. package/dist/cjs/session/pase/PaseClient.js.map +1 -1
  27. package/dist/cjs/session/pase/PaseMessages.d.ts +21 -0
  28. package/dist/cjs/session/pase/PaseMessages.d.ts.map +1 -1
  29. package/dist/cjs/session/pase/PaseMessages.js +6 -1
  30. package/dist/cjs/session/pase/PaseMessages.js.map +1 -1
  31. package/dist/cjs/session/pase/PaseMessenger.d.ts +10 -0
  32. package/dist/cjs/session/pase/PaseMessenger.d.ts.map +1 -1
  33. package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
  34. package/dist/cjs/session/pase/PaseServer.js +8 -2
  35. package/dist/cjs/session/pase/PaseServer.js.map +1 -1
  36. package/dist/esm/common/Scanner.d.ts +25 -1
  37. package/dist/esm/common/Scanner.d.ts.map +1 -1
  38. package/dist/esm/common/Scanner.js +18 -1
  39. package/dist/esm/common/Scanner.js.map +1 -1
  40. package/dist/esm/mdns/MdnsBroadcaster.js +3 -3
  41. package/dist/esm/mdns/MdnsConsts.d.ts.map +1 -1
  42. package/dist/esm/mdns/MdnsScanner.d.ts.map +1 -1
  43. package/dist/esm/mdns/MdnsScanner.js +1 -1
  44. package/dist/esm/mdns/MdnsScanner.js.map +1 -1
  45. package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -1
  46. package/dist/esm/peer/ControllerCommissioningFlow.js +55 -55
  47. package/dist/esm/peer/ControllerCommissioningFlow.js.map +1 -1
  48. package/dist/esm/session/Session.d.ts +33 -1
  49. package/dist/esm/session/Session.d.ts.map +1 -1
  50. package/dist/esm/session/Session.js +16 -3
  51. package/dist/esm/session/Session.js.map +1 -1
  52. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  53. package/dist/esm/session/SessionManager.js +15 -4
  54. package/dist/esm/session/SessionManager.js.map +1 -1
  55. package/dist/esm/session/case/CaseMessages.d.ts +15 -0
  56. package/dist/esm/session/case/CaseMessages.d.ts.map +1 -1
  57. package/dist/esm/session/case/CaseMessenger.d.ts +15 -0
  58. package/dist/esm/session/case/CaseMessenger.d.ts.map +1 -1
  59. package/dist/esm/session/pase/PaseClient.d.ts.map +1 -1
  60. package/dist/esm/session/pase/PaseClient.js +7 -1
  61. package/dist/esm/session/pase/PaseClient.js.map +1 -1
  62. package/dist/esm/session/pase/PaseMessages.d.ts +21 -0
  63. package/dist/esm/session/pase/PaseMessages.d.ts.map +1 -1
  64. package/dist/esm/session/pase/PaseMessages.js +16 -2
  65. package/dist/esm/session/pase/PaseMessages.js.map +1 -1
  66. package/dist/esm/session/pase/PaseMessenger.d.ts +10 -0
  67. package/dist/esm/session/pase/PaseMessenger.d.ts.map +1 -1
  68. package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
  69. package/dist/esm/session/pase/PaseServer.js +8 -2
  70. package/dist/esm/session/pase/PaseServer.js.map +1 -1
  71. package/package.json +6 -6
  72. package/src/common/Scanner.ts +18 -2
  73. package/src/mdns/MdnsBroadcaster.ts +3 -3
  74. package/src/mdns/MdnsScanner.ts +3 -2
  75. package/src/peer/ControllerCommissioningFlow.ts +55 -52
  76. package/src/session/Session.ts +50 -1
  77. package/src/session/SessionManager.ts +20 -2
  78. package/src/session/pase/PaseClient.ts +10 -1
  79. package/src/session/pase/PaseMessages.ts +17 -1
  80. package/src/session/pase/PaseServer.ts +11 -1
@@ -46,12 +46,21 @@ export class PaseClient {
46
46
  const initiatorSessionId = await this.#sessions.getNextAvailableSessionId(); // Initiator Session Id
47
47
 
48
48
  // Send pbkdfRequest and Read pbkdfResponse
49
+ const tcpSupported =
50
+ sessionParameters.supportedTransports?.tcpClient ||
51
+ sessionParameters.supportedTransports?.tcpServer ||
52
+ false;
49
53
  const requestPayload = await messenger.sendPbkdfParamRequest({
50
54
  initiatorRandom,
51
55
  initiatorSessionId,
52
56
  passcodeId: DEFAULT_PASSCODE_ID,
53
57
  hasPbkdfParameters: false,
54
- initiatorSessionParams: sessionParameters,
58
+ initiatorSessionParams: {
59
+ ...sessionParameters,
60
+ // The MAX_TCP_MESSAGE_SIZE field SHALL only be present if the SUPPORTED_TRANSPORTS field
61
+ // indicates that TCP is supported.
62
+ maxTcpMessageSize: tcpSupported ? sessionParameters.maxTcpMessageSize : undefined,
63
+ },
55
64
  });
56
65
  const {
57
66
  responsePayload,
@@ -4,8 +4,18 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import { SupportedTransportsBitmap } from "#common/index.js";
7
8
  import { CRYPTO_HASH_LEN_BYTES, CRYPTO_PUBLIC_KEY_SIZE_BYTES } from "#general";
8
- import { TlvBoolean, TlvByteString, TlvField, TlvObject, TlvOptionalField, TlvUInt16, TlvUInt32 } from "#types";
9
+ import {
10
+ TlvBitmap,
11
+ TlvBoolean,
12
+ TlvByteString,
13
+ TlvField,
14
+ TlvObject,
15
+ TlvOptionalField,
16
+ TlvUInt16,
17
+ TlvUInt32,
18
+ } from "#types";
9
19
 
10
20
  /** @see {@link MatterSpecification.v13.Core} § 4.12.8 */
11
21
  export const TlvSessionParameters = TlvObject({
@@ -29,6 +39,12 @@ export const TlvSessionParameters = TlvObject({
29
39
 
30
40
  /** Maximum Paths pert Invoke */
31
41
  maxPathsPerInvoke: TlvOptionalField(7, TlvUInt16) /* default: 1 */,
42
+
43
+ /** Supported transport protocols in addition to MRP.*/
44
+ supportedTransports: TlvOptionalField(8, TlvBitmap(TlvUInt16, SupportedTransportsBitmap)) /* default: {} */,
45
+
46
+ /** Maximum size of the message carried over TCP in bytes */
47
+ maxTcpMessageSize: TlvOptionalField(9, TlvUInt32) /* default: 64000 */,
32
48
  });
33
49
 
34
50
  /** @see {@link MatterSpecification.v13.Core} § 4.14.1.2 */
@@ -127,12 +127,22 @@ export class PaseServer implements ProtocolHandler {
127
127
  const responderSessionId = await this.sessions.getNextAvailableSessionId(); // Responder Session Id
128
128
  const responderRandom = Crypto.getRandom();
129
129
 
130
+ const responderSessionParams = this.sessions.sessionParameters;
131
+ const tcpSupported =
132
+ responderSessionParams.supportedTransports?.tcpClient ||
133
+ responderSessionParams.supportedTransports?.tcpServer ||
134
+ false;
130
135
  const responsePayload = await messenger.sendPbkdfParamResponse({
131
136
  initiatorRandom,
132
137
  responderRandom,
133
138
  responderSessionId,
134
139
  pbkdfParameters: hasPbkdfParameters ? undefined : this.pbkdfParameters,
135
- responderSessionParams: this.sessions.sessionParameters, // responder session parameters
140
+ responderSessionParams: {
141
+ ...responderSessionParams,
142
+ // The MAX_TCP_MESSAGE_SIZE field SHALL only be present if the SUPPORTED_TRANSPORTS field
143
+ // indicates that TCP is supported.
144
+ maxTcpMessageSize: tcpSupported ? responderSessionParams.maxTcpMessageSize : undefined,
145
+ },
136
146
  });
137
147
 
138
148
  // Process pake1 and send pake2