@matter/protocol 0.13.1-alpha.0-20250429-fd3557399 → 0.13.1-alpha.0-20250501-80c86b03e

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 (109) hide show
  1. package/dist/cjs/action/response/ReadResult.d.ts +4 -0
  2. package/dist/cjs/action/response/ReadResult.d.ts.map +1 -1
  3. package/dist/cjs/action/server/AttributeResponse.d.ts +1 -1
  4. package/dist/cjs/action/server/AttributeResponse.d.ts.map +1 -1
  5. package/dist/cjs/action/server/AttributeResponse.js +37 -17
  6. package/dist/cjs/action/server/AttributeResponse.js.map +2 -2
  7. package/dist/cjs/interaction/AttributeDataEncoder.d.ts +1 -1
  8. package/dist/cjs/interaction/AttributeDataEncoder.d.ts.map +1 -1
  9. package/dist/cjs/interaction/InteractionEndpointStructure.d.ts +37 -1
  10. package/dist/cjs/interaction/InteractionEndpointStructure.d.ts.map +1 -1
  11. package/dist/cjs/interaction/InteractionEndpointStructure.js +34 -15
  12. package/dist/cjs/interaction/InteractionEndpointStructure.js.map +1 -1
  13. package/dist/cjs/interaction/InteractionMessenger.js +1 -1
  14. package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
  15. package/dist/cjs/interaction/ServerSubscription.d.ts +1 -2
  16. package/dist/cjs/interaction/ServerSubscription.d.ts.map +1 -1
  17. package/dist/cjs/interaction/ServerSubscription.js +20 -20
  18. package/dist/cjs/interaction/ServerSubscription.js.map +1 -1
  19. package/dist/cjs/interaction/SubscriptionClient.d.ts +2 -1
  20. package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
  21. package/dist/cjs/interaction/SubscriptionClient.js +2 -1
  22. package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
  23. package/dist/cjs/interaction/index.d.ts +0 -1
  24. package/dist/cjs/interaction/index.d.ts.map +1 -1
  25. package/dist/cjs/interaction/index.js +0 -1
  26. package/dist/cjs/interaction/index.js.map +1 -1
  27. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  28. package/dist/cjs/protocol/ExchangeManager.js +7 -2
  29. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  30. package/dist/cjs/protocol/ProtocolHandler.d.ts +1 -0
  31. package/dist/cjs/protocol/ProtocolHandler.d.ts.map +1 -1
  32. package/dist/cjs/securechannel/SecureChannelProtocol.d.ts +1 -0
  33. package/dist/cjs/securechannel/SecureChannelProtocol.d.ts.map +1 -1
  34. package/dist/cjs/securechannel/SecureChannelProtocol.js +1 -0
  35. package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
  36. package/dist/cjs/session/case/CaseServer.d.ts +1 -0
  37. package/dist/cjs/session/case/CaseServer.d.ts.map +1 -1
  38. package/dist/cjs/session/case/CaseServer.js +1 -0
  39. package/dist/cjs/session/case/CaseServer.js.map +1 -1
  40. package/dist/cjs/session/pase/PaseServer.d.ts +1 -0
  41. package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
  42. package/dist/cjs/session/pase/PaseServer.js +1 -0
  43. package/dist/cjs/session/pase/PaseServer.js.map +1 -1
  44. package/dist/esm/action/response/ReadResult.d.ts +4 -0
  45. package/dist/esm/action/response/ReadResult.d.ts.map +1 -1
  46. package/dist/esm/action/server/AttributeResponse.d.ts +1 -1
  47. package/dist/esm/action/server/AttributeResponse.d.ts.map +1 -1
  48. package/dist/esm/action/server/AttributeResponse.js +37 -17
  49. package/dist/esm/action/server/AttributeResponse.js.map +1 -1
  50. package/dist/esm/interaction/AttributeDataEncoder.d.ts +1 -1
  51. package/dist/esm/interaction/AttributeDataEncoder.d.ts.map +1 -1
  52. package/dist/esm/interaction/InteractionEndpointStructure.d.ts +37 -1
  53. package/dist/esm/interaction/InteractionEndpointStructure.d.ts.map +1 -1
  54. package/dist/esm/interaction/InteractionEndpointStructure.js +21 -7
  55. package/dist/esm/interaction/InteractionEndpointStructure.js.map +1 -1
  56. package/dist/esm/interaction/InteractionMessenger.js +1 -1
  57. package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
  58. package/dist/esm/interaction/ServerSubscription.d.ts +1 -2
  59. package/dist/esm/interaction/ServerSubscription.d.ts.map +1 -1
  60. package/dist/esm/interaction/ServerSubscription.js +4 -4
  61. package/dist/esm/interaction/ServerSubscription.js.map +1 -1
  62. package/dist/esm/interaction/SubscriptionClient.d.ts +2 -1
  63. package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
  64. package/dist/esm/interaction/SubscriptionClient.js +2 -1
  65. package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
  66. package/dist/esm/interaction/index.d.ts +0 -1
  67. package/dist/esm/interaction/index.d.ts.map +1 -1
  68. package/dist/esm/interaction/index.js +0 -1
  69. package/dist/esm/interaction/index.js.map +1 -1
  70. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  71. package/dist/esm/protocol/ExchangeManager.js +7 -2
  72. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  73. package/dist/esm/protocol/ProtocolHandler.d.ts +1 -0
  74. package/dist/esm/protocol/ProtocolHandler.d.ts.map +1 -1
  75. package/dist/esm/securechannel/SecureChannelProtocol.d.ts +1 -0
  76. package/dist/esm/securechannel/SecureChannelProtocol.d.ts.map +1 -1
  77. package/dist/esm/securechannel/SecureChannelProtocol.js +1 -0
  78. package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
  79. package/dist/esm/session/case/CaseServer.d.ts +1 -0
  80. package/dist/esm/session/case/CaseServer.d.ts.map +1 -1
  81. package/dist/esm/session/case/CaseServer.js +1 -0
  82. package/dist/esm/session/case/CaseServer.js.map +1 -1
  83. package/dist/esm/session/pase/PaseServer.d.ts +1 -0
  84. package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
  85. package/dist/esm/session/pase/PaseServer.js +1 -0
  86. package/dist/esm/session/pase/PaseServer.js.map +1 -1
  87. package/package.json +6 -6
  88. package/src/action/response/ReadResult.ts +4 -0
  89. package/src/action/server/AttributeResponse.ts +40 -17
  90. package/src/interaction/AttributeDataEncoder.ts +1 -1
  91. package/src/interaction/InteractionEndpointStructure.ts +62 -12
  92. package/src/interaction/InteractionMessenger.ts +1 -1
  93. package/src/interaction/ServerSubscription.ts +5 -5
  94. package/src/interaction/SubscriptionClient.ts +2 -2
  95. package/src/interaction/index.ts +0 -1
  96. package/src/protocol/ExchangeManager.ts +15 -2
  97. package/src/protocol/ProtocolHandler.ts +1 -0
  98. package/src/securechannel/SecureChannelProtocol.ts +1 -0
  99. package/src/session/case/CaseServer.ts +1 -0
  100. package/src/session/pase/PaseServer.ts +1 -0
  101. package/dist/cjs/interaction/InteractionServer.d.ts +0 -132
  102. package/dist/cjs/interaction/InteractionServer.d.ts.map +0 -1
  103. package/dist/cjs/interaction/InteractionServer.js +0 -1166
  104. package/dist/cjs/interaction/InteractionServer.js.map +0 -6
  105. package/dist/esm/interaction/InteractionServer.d.ts +0 -132
  106. package/dist/esm/interaction/InteractionServer.d.ts.map +0 -1
  107. package/dist/esm/interaction/InteractionServer.js +0 -1177
  108. package/dist/esm/interaction/InteractionServer.js.map +0 -6
  109. package/src/interaction/InteractionServer.ts +0 -1649
@@ -238,7 +238,7 @@ export class ExchangeManager {
238
238
 
239
239
  let isDuplicate;
240
240
  try {
241
- session?.updateMessageCounter(packet.header.messageId, packet.header.sourceNodeId);
241
+ session.updateMessageCounter(packet.header.messageId, packet.header.sourceNodeId);
242
242
  isDuplicate = false;
243
243
  } catch (e) {
244
244
  DuplicateMessageError.accept(e);
@@ -271,7 +271,20 @@ export class ExchangeManager {
271
271
 
272
272
  const protocolHandler = this.#protocols.get(message.payloadHeader.protocolId);
273
273
 
274
- if (protocolHandler !== undefined && message.payloadHeader.isInitiatorMessage && !isDuplicate) {
274
+ // Having a "Secure Session" means it is encrypted in our internal working
275
+ // TODO When adding Group sessions, we need to check how to adjust that handling
276
+ if (protocolHandler !== undefined && protocolHandler.requiresSecureSession !== session.isSecure) {
277
+ logger.debug(
278
+ `Ignoring message ${messageId} for protocol ${message.payloadHeader.protocolId} and exchange id ${message.payloadHeader.exchangeId} on channel ${channel.name} because not matching the security requirements.`,
279
+ );
280
+ }
281
+
282
+ if (
283
+ protocolHandler !== undefined &&
284
+ message.payloadHeader.isInitiatorMessage &&
285
+ !isDuplicate &&
286
+ protocolHandler.requiresSecureSession === session.isSecure
287
+ ) {
275
288
  if (
276
289
  message.payloadHeader.messageType == SecureMessageType.StandaloneAck &&
277
290
  !message.payloadHeader.requiresAck
@@ -9,6 +9,7 @@ import { MessageExchange } from "./MessageExchange.js";
9
9
 
10
10
  export interface ProtocolHandler {
11
11
  readonly id: number;
12
+ readonly requiresSecureSession: boolean;
12
13
  onNewExchange(exchange: MessageExchange, message: Message): Promise<void>;
13
14
  close(): Promise<void>;
14
15
  }
@@ -29,6 +29,7 @@ const logger = Logger.get("SecureChannelProtocol");
29
29
 
30
30
  export class StatusReportOnlySecureChannelProtocol implements ProtocolHandler {
31
31
  readonly id = SECURE_CHANNEL_PROTOCOL_ID;
32
+ readonly requiresSecureSession = false;
32
33
 
33
34
  async onNewExchange(exchange: MessageExchange, message: Message) {
34
35
  const messageType = message.payloadHeader.messageType;
@@ -31,6 +31,7 @@ const logger = Logger.get("CaseServer");
31
31
 
32
32
  export class CaseServer implements ProtocolHandler {
33
33
  readonly id = SECURE_CHANNEL_PROTOCOL_ID;
34
+ readonly requiresSecureSession = false;
34
35
 
35
36
  #sessions: SessionManager;
36
37
  #fabrics: FabricManager;
@@ -34,6 +34,7 @@ export class MaximumPasePairingErrorsReachedError extends MatterFlowError {}
34
34
 
35
35
  export class PaseServer implements ProtocolHandler {
36
36
  readonly id = SECURE_CHANNEL_PROTOCOL_ID;
37
+ readonly requiresSecureSession = false;
37
38
 
38
39
  #pairingTimer: Timer | undefined;
39
40
  #pairingErrors = 0;
@@ -1,132 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2022-2025 Matter.js Authors
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { Observable, ServerAddressIp } from "#general";
7
- import { PeerAddress } from "#peer/PeerAddress.js";
8
- import { SessionManager } from "#session/SessionManager.js";
9
- import { AttributeId, ClusterId, CommandId, EndpointNumber, EventId, NodeId, StatusCode, TlvAttributePath, TlvClusterPath, TlvEventFilter, TlvEventPath, TypeFromSchema } from "#types";
10
- import { AnyAttributeServer, AttributeServer } from "../cluster/server/AttributeServer.js";
11
- import { CommandServer } from "../cluster/server/CommandServer.js";
12
- import { AnyEventServer } from "../cluster/server/EventServer.js";
13
- import { Message } from "../codec/MessageCodec.js";
14
- import { EndpointInterface } from "../endpoint/EndpointInterface.js";
15
- import { MessageExchange } from "../protocol/MessageExchange.js";
16
- import { ProtocolHandler } from "../protocol/ProtocolHandler.js";
17
- import { SecureSession } from "../session/SecureSession.js";
18
- import { DataReportPayloadIterator } from "./AttributeDataEncoder.js";
19
- import { InteractionEndpointStructure } from "./InteractionEndpointStructure.js";
20
- import { DataReport, InteractionRecipient, InteractionServerMessenger, InvokeRequest, ReadRequest, SubscribeRequest, TimedRequest, WriteRequest, WriteResponse } from "./InteractionMessenger.js";
21
- import { ServerSubscription } from "./ServerSubscription.js";
22
- import { ServerSubscriptionConfig } from "./SubscriptionOptions.js";
23
- export interface PeerSubscription {
24
- subscriptionId: number;
25
- peerAddress: PeerAddress;
26
- minIntervalFloorSeconds: number;
27
- maxIntervalCeilingSeconds: number;
28
- attributeRequests?: TypeFromSchema<typeof TlvAttributePath>[];
29
- eventRequests?: TypeFromSchema<typeof TlvEventPath>[];
30
- isFabricFiltered: boolean;
31
- maxInterval: number;
32
- sendInterval: number;
33
- operationalAddress?: ServerAddressIp;
34
- }
35
- export interface CommandPath {
36
- nodeId?: NodeId;
37
- endpointId: EndpointNumber;
38
- clusterId: ClusterId;
39
- commandId: CommandId;
40
- }
41
- export interface AttributePath {
42
- nodeId?: NodeId;
43
- endpointId: EndpointNumber;
44
- clusterId: ClusterId;
45
- attributeId: AttributeId;
46
- }
47
- export interface EventPath {
48
- nodeId?: NodeId;
49
- endpointId: EndpointNumber;
50
- clusterId: ClusterId;
51
- eventId: EventId;
52
- isUrgent?: boolean;
53
- }
54
- export interface AttributeWithPath {
55
- path: AttributePath;
56
- attribute: AnyAttributeServer<any>;
57
- }
58
- export interface EventWithPath {
59
- path: EventPath;
60
- event: AnyEventServer<any, any>;
61
- }
62
- export interface CommandWithPath {
63
- path: CommandPath;
64
- command: CommandServer<any, any>;
65
- }
66
- export declare function genericElementPathToId(endpointId: EndpointNumber | undefined, clusterId: ClusterId | undefined, elementId: number | undefined): string;
67
- export declare function commandPathToId({ endpointId, clusterId, commandId }: CommandPath): string;
68
- export declare function attributePathToId({ endpointId, clusterId, attributeId }: TypeFromSchema<typeof TlvAttributePath>): string;
69
- export declare function eventPathToId({ endpointId, clusterId, eventId }: TypeFromSchema<typeof TlvEventPath>): string;
70
- export declare function clusterPathToId({ nodeId, endpointId, clusterId }: TypeFromSchema<typeof TlvClusterPath>): string;
71
- export declare function validateReadAttributesPath(path: TypeFromSchema<typeof TlvAttributePath>, isGroupSession?: boolean): void;
72
- export declare function validateReadEventPath(path: TypeFromSchema<typeof TlvEventPath>, isGroupSession?: boolean): void;
73
- /**
74
- * Interfaces {@link InteractionServer} with other components.
75
- */
76
- export interface InteractionContext {
77
- readonly sessions: SessionManager;
78
- readonly structure: InteractionEndpointStructure;
79
- readonly subscriptionOptions?: Partial<ServerSubscriptionConfig>;
80
- readonly maxPathsPerInvoke?: number;
81
- initiateExchange(address: PeerAddress, protocolId: number): MessageExchange;
82
- }
83
- /**
84
- * Translates interactions from the Matter protocol to matter.js APIs.
85
- */
86
- export declare class InteractionServer implements ProtocolHandler, InteractionRecipient {
87
- #private;
88
- readonly id = 1;
89
- constructor(context: InteractionContext);
90
- protected get isClosing(): boolean;
91
- get maxPathsPerInvoke(): number;
92
- get subscriptionEstablishmentStarted(): Observable<[peerAddress: PeerAddress], void>;
93
- onNewExchange(exchange: MessageExchange, message: Message): Promise<void>;
94
- get clientHandler(): ProtocolHandler | undefined;
95
- set clientHandler(clientHandler: ProtocolHandler);
96
- handleReadRequest(exchange: MessageExchange, readRequest: ReadRequest, message: Message): Promise<{
97
- dataReport: DataReport;
98
- payload?: DataReportPayloadIterator;
99
- }>;
100
- protected readAttribute(_path: AttributePath, attribute: AnyAttributeServer<any>, exchange: MessageExchange, isFabricFiltered: boolean, message: Message, offline?: boolean): {
101
- version: number;
102
- value: any;
103
- };
104
- /**
105
- * Reads the attributes for the given endpoint.
106
- * This can currently only be used for subscriptions because errors are ignored!
107
- */
108
- protected readEndpointAttributesForSubscription(attributes: {
109
- path: AttributePath;
110
- attribute: AnyAttributeServer<any>;
111
- }[], exchange: MessageExchange, isFabricFiltered: boolean, message: Message, offline?: boolean): {
112
- path: AttributePath;
113
- attribute: AnyAttributeServer<unknown>;
114
- value: any;
115
- version: number;
116
- }[];
117
- protected readEvent(_path: EventPath, eventFilters: TypeFromSchema<typeof TlvEventFilter>[] | undefined, event: AnyEventServer<any, any>, exchange: MessageExchange, isFabricFiltered: boolean, message: Message): Promise<import("../index.js").NumberedOccurrence[]>;
118
- handleWriteRequest(exchange: MessageExchange, { suppressResponse, timedRequest, writeRequests, interactionModelRevision, moreChunkedMessages }: WriteRequest, message: Message): Promise<WriteResponse>;
119
- protected writeAttribute(_path: AttributePath, attribute: AttributeServer<any>, value: any, exchange: MessageExchange, message: Message, _endpoint: EndpointInterface, _receivedWithinTimedInteraction?: boolean, isListWrite?: boolean): Promise<void>;
120
- handleSubscribeRequest(exchange: MessageExchange, request: SubscribeRequest, messenger: InteractionServerMessenger, message: Message): Promise<void>;
121
- establishFormerSubscription({ subscriptionId, attributeRequests, eventRequests, isFabricFiltered, minIntervalFloorSeconds, maxIntervalCeilingSeconds, maxInterval, sendInterval, }: PeerSubscription, session: SecureSession): Promise<ServerSubscription>;
122
- handleInvokeRequest(exchange: MessageExchange, { invokeRequests, timedRequest, suppressResponse, interactionModelRevision }: InvokeRequest, messenger: InteractionServerMessenger, message: Message): Promise<void>;
123
- protected invokeCommand(_path: CommandPath, command: CommandServer<any, any>, exchange: MessageExchange, commandFields: any, message: Message, endpoint: EndpointInterface, _receivedWithinTimedInteraction?: boolean): Promise<{
124
- code: StatusCode;
125
- clusterCode?: number;
126
- responseId: CommandId;
127
- response: import("#types").TlvStream;
128
- }>;
129
- handleTimedRequest(exchange: MessageExchange, { timeout, interactionModelRevision }: TimedRequest): void;
130
- close(): Promise<void>;
131
- }
132
- //# sourceMappingURL=InteractionServer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InteractionServer.d.ts","sourceRoot":"","sources":["../../../src/interaction/InteractionServer.ts"],"names":[],"mappings":"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"}