@matter/protocol 0.15.0-alpha.0-20250624-e8c89f458 → 0.15.0-alpha.0-20250625-c7634df96
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.
- package/dist/cjs/cluster/client/ClusterClient.d.ts.map +1 -1
- package/dist/cjs/cluster/client/ClusterClient.js +7 -1
- package/dist/cjs/cluster/client/ClusterClient.js.map +1 -1
- package/dist/cjs/cluster/client/ClusterClientTypes.d.ts +10 -0
- package/dist/cjs/cluster/client/ClusterClientTypes.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.d.ts +8 -1
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.js +15 -10
- package/dist/cjs/interaction/InteractionClient.js.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.d.ts +0 -1
- package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.js +0 -3
- package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
- package/dist/cjs/interaction/SubscriptionClient.d.ts +1 -1
- package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/SubscriptionClient.js +1 -1
- package/dist/cjs/peer/ControllerCommissioner.d.ts +3 -2
- package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.js +6 -5
- package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
- package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioningFlow.js +81 -52
- package/dist/cjs/peer/ControllerCommissioningFlow.js.map +1 -1
- package/dist/cjs/peer/PeerSet.d.ts +4 -3
- package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
- package/dist/cjs/peer/PeerSet.js +10 -9
- package/dist/cjs/peer/PeerSet.js.map +1 -1
- package/dist/cjs/protocol/ChannelManager.d.ts +2 -2
- package/dist/cjs/protocol/ChannelManager.d.ts.map +1 -1
- package/dist/cjs/protocol/ChannelManager.js +4 -4
- package/dist/cjs/protocol/ChannelManager.js.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.d.ts +5 -24
- package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.js +12 -55
- package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
- package/dist/cjs/protocol/ExchangeProvider.d.ts +10 -6
- package/dist/cjs/protocol/ExchangeProvider.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeProvider.js +12 -1
- package/dist/cjs/protocol/ExchangeProvider.js.map +1 -1
- package/dist/cjs/protocol/MessageChannel.d.ts +52 -0
- package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -0
- package/dist/cjs/protocol/MessageChannel.js +130 -0
- package/dist/cjs/protocol/MessageChannel.js.map +6 -0
- package/dist/cjs/protocol/MessageExchange.d.ts +5 -5
- package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageExchange.js +34 -78
- package/dist/cjs/protocol/MessageExchange.js.map +1 -1
- package/dist/cjs/protocol/ProtocolStatusMessage.d.ts +20 -0
- package/dist/cjs/protocol/ProtocolStatusMessage.d.ts.map +1 -0
- package/dist/cjs/protocol/ProtocolStatusMessage.js +61 -0
- package/dist/cjs/protocol/ProtocolStatusMessage.js.map +6 -0
- package/dist/cjs/protocol/index.d.ts +2 -0
- package/dist/cjs/protocol/index.d.ts.map +1 -1
- package/dist/cjs/protocol/index.js +2 -0
- package/dist/cjs/protocol/index.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +4 -5
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.js +7 -8
- package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelProtocol.js +2 -2
- package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.d.ts +4 -15
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.d.ts.map +1 -1
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.js +3 -21
- package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.js.map +1 -1
- package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseClient.js +1 -1
- package/dist/cjs/session/case/CaseClient.js.map +1 -1
- package/dist/cjs/session/case/CaseServer.js +2 -2
- package/dist/cjs/session/case/CaseServer.js.map +1 -1
- package/dist/cjs/session/pase/PaseClient.js +2 -2
- package/dist/cjs/session/pase/PaseClient.js.map +1 -1
- package/dist/cjs/session/pase/PaseServer.js +1 -1
- package/dist/cjs/session/pase/PaseServer.js.map +1 -1
- package/dist/esm/cluster/client/ClusterClient.d.ts.map +1 -1
- package/dist/esm/cluster/client/ClusterClient.js +7 -1
- package/dist/esm/cluster/client/ClusterClient.js.map +1 -1
- package/dist/esm/cluster/client/ClusterClientTypes.d.ts +10 -0
- package/dist/esm/cluster/client/ClusterClientTypes.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.d.ts +8 -1
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.js +15 -10
- package/dist/esm/interaction/InteractionClient.js.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.d.ts +0 -1
- package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.js +0 -3
- package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
- package/dist/esm/interaction/SubscriptionClient.d.ts +1 -1
- package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
- package/dist/esm/interaction/SubscriptionClient.js +1 -1
- package/dist/esm/peer/ControllerCommissioner.d.ts +3 -2
- package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.js +4 -3
- package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
- package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioningFlow.js +81 -52
- package/dist/esm/peer/ControllerCommissioningFlow.js.map +1 -1
- package/dist/esm/peer/PeerSet.d.ts +4 -3
- package/dist/esm/peer/PeerSet.d.ts.map +1 -1
- package/dist/esm/peer/PeerSet.js +7 -6
- package/dist/esm/peer/PeerSet.js.map +1 -1
- package/dist/esm/protocol/ChannelManager.d.ts +2 -2
- package/dist/esm/protocol/ChannelManager.d.ts.map +1 -1
- package/dist/esm/protocol/ChannelManager.js +2 -2
- package/dist/esm/protocol/ChannelManager.js.map +1 -1
- package/dist/esm/protocol/ExchangeManager.d.ts +5 -24
- package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeManager.js +13 -56
- package/dist/esm/protocol/ExchangeManager.js.map +1 -1
- package/dist/esm/protocol/ExchangeProvider.d.ts +10 -6
- package/dist/esm/protocol/ExchangeProvider.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeProvider.js +12 -1
- package/dist/esm/protocol/ExchangeProvider.js.map +1 -1
- package/dist/esm/protocol/MessageChannel.d.ts +52 -0
- package/dist/esm/protocol/MessageChannel.d.ts.map +1 -0
- package/dist/esm/protocol/MessageChannel.js +110 -0
- package/dist/esm/protocol/MessageChannel.js.map +6 -0
- package/dist/esm/protocol/MessageExchange.d.ts +5 -5
- package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/esm/protocol/MessageExchange.js +39 -83
- package/dist/esm/protocol/MessageExchange.js.map +1 -1
- package/dist/esm/protocol/ProtocolStatusMessage.d.ts +20 -0
- package/dist/esm/protocol/ProtocolStatusMessage.d.ts.map +1 -0
- package/dist/esm/protocol/ProtocolStatusMessage.js +41 -0
- package/dist/esm/protocol/ProtocolStatusMessage.js.map +6 -0
- package/dist/esm/protocol/index.d.ts +2 -0
- package/dist/esm/protocol/index.d.ts.map +1 -1
- package/dist/esm/protocol/index.js +2 -0
- package/dist/esm/protocol/index.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts +4 -5
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.js +8 -14
- package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelProtocol.js +3 -3
- package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.d.ts +4 -15
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.d.ts.map +1 -1
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.js +4 -22
- package/dist/esm/securechannel/SecureChannelStatusMessageSchema.js.map +1 -1
- package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
- package/dist/esm/session/case/CaseClient.js +2 -2
- package/dist/esm/session/case/CaseClient.js.map +1 -1
- package/dist/esm/session/case/CaseServer.js +3 -3
- package/dist/esm/session/case/CaseServer.js.map +1 -1
- package/dist/esm/session/pase/PaseClient.js +3 -3
- package/dist/esm/session/pase/PaseClient.js.map +1 -1
- package/dist/esm/session/pase/PaseServer.js +2 -2
- package/dist/esm/session/pase/PaseServer.js.map +1 -1
- package/package.json +6 -6
- package/src/cluster/client/ClusterClient.ts +8 -1
- package/src/cluster/client/ClusterClientTypes.ts +12 -0
- package/src/interaction/InteractionClient.ts +29 -16
- package/src/interaction/InteractionMessenger.ts +0 -4
- package/src/interaction/SubscriptionClient.ts +2 -2
- package/src/peer/ControllerCommissioner.ts +4 -3
- package/src/peer/ControllerCommissioningFlow.ts +96 -57
- package/src/peer/PeerSet.ts +7 -6
- package/src/protocol/ChannelManager.ts +3 -3
- package/src/protocol/ExchangeManager.ts +18 -67
- package/src/protocol/ExchangeProvider.ts +20 -6
- package/src/protocol/MessageChannel.ts +163 -0
- package/src/protocol/MessageExchange.ts +40 -119
- package/src/protocol/ProtocolStatusMessage.ts +51 -0
- package/src/protocol/index.ts +2 -0
- package/src/securechannel/SecureChannelMessenger.ts +11 -18
- package/src/securechannel/SecureChannelProtocol.ts +3 -3
- package/src/securechannel/SecureChannelStatusMessageSchema.ts +5 -31
- package/src/session/case/CaseClient.ts +2 -2
- package/src/session/case/CaseServer.ts +3 -3
- package/src/session/pase/PaseClient.ts +3 -3
- package/src/session/pase/PaseServer.ts +2 -2
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { MessageCodec, SessionType } from "#codec/MessageCodec.js";
|
|
6
7
|
import {
|
|
7
8
|
AsyncObservable,
|
|
9
|
+
createPromise,
|
|
8
10
|
CRYPTO_AEAD_MIC_LENGTH_BYTES,
|
|
9
11
|
DataReadQueue,
|
|
10
12
|
Diagnostic,
|
|
@@ -13,10 +15,16 @@ import {
|
|
|
13
15
|
MatterError,
|
|
14
16
|
MatterFlowError,
|
|
15
17
|
NoResponseTimeoutError,
|
|
16
|
-
Time
|
|
17
|
-
createPromise
|
|
18
|
+
Time
|
|
18
19
|
} from "#general";
|
|
19
|
-
import {
|
|
20
|
+
import { MRP } from "#protocol/MessageChannel.js";
|
|
21
|
+
import { SecureChannelProtocol } from "#securechannel/SecureChannelProtocol.js";
|
|
22
|
+
import { GroupSession } from "#session/GroupSession.js";
|
|
23
|
+
import {
|
|
24
|
+
SESSION_ACTIVE_INTERVAL_MS,
|
|
25
|
+
SESSION_ACTIVE_THRESHOLD_MS,
|
|
26
|
+
SESSION_IDLE_INTERVAL_MS
|
|
27
|
+
} from "#session/Session.js";
|
|
20
28
|
import {
|
|
21
29
|
GroupId,
|
|
22
30
|
SECURE_CHANNEL_PROTOCOL_ID,
|
|
@@ -24,13 +32,6 @@ import {
|
|
|
24
32
|
StatusCode,
|
|
25
33
|
StatusResponseError
|
|
26
34
|
} from "#types";
|
|
27
|
-
import { MessageCodec, SessionType } from "../codec/MessageCodec.js";
|
|
28
|
-
import { SecureChannelProtocol } from "../securechannel/SecureChannelProtocol.js";
|
|
29
|
-
import {
|
|
30
|
-
SESSION_ACTIVE_INTERVAL_MS,
|
|
31
|
-
SESSION_ACTIVE_THRESHOLD_MS,
|
|
32
|
-
SESSION_IDLE_INTERVAL_MS
|
|
33
|
-
} from "../session/Session.js";
|
|
34
35
|
import { ChannelNotConnectedError } from "./ExchangeManager.js";
|
|
35
36
|
const logger = Logger.get("MessageExchange");
|
|
36
37
|
class RetransmissionLimitReachedError extends NoResponseTimeoutError {
|
|
@@ -41,14 +42,7 @@ class UnexpectedMessageError extends MatterError {
|
|
|
41
42
|
this.receivedMessage = receivedMessage;
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
|
-
const MRP_MAX_TRANSMISSIONS = 5;
|
|
45
|
-
const MRP_BACKOFF_BASE = 1.6;
|
|
46
|
-
const MRP_BACKOFF_JITTER = 0.25;
|
|
47
|
-
const MRP_BACKOFF_MARGIN = 1.1;
|
|
48
|
-
const MRP_BACKOFF_THRESHOLD = 1;
|
|
49
|
-
const MRP_STANDALONE_ACK_TIMEOUT_MS = 200;
|
|
50
45
|
const DEFAULT_EXPECTED_PROCESSING_TIME_MS = 2e3;
|
|
51
|
-
const PEER_RESPONSE_TIME_BUFFER_MS = 5e3;
|
|
52
46
|
const MATTER_MESSAGE_OVERHEAD = 26 + 12 + CRYPTO_AEAD_MIC_LENGTH_BYTES;
|
|
53
47
|
class MessageExchange {
|
|
54
48
|
constructor(context, isInitiator, peerSessionId, nodeId, peerNodeId, exchangeId, protocolId, requiresSecureSession) {
|
|
@@ -66,8 +60,6 @@ class MessageExchange {
|
|
|
66
60
|
this.#activeIntervalMs = activeIntervalMs ?? SESSION_ACTIVE_INTERVAL_MS;
|
|
67
61
|
this.#idleIntervalMs = idleIntervalMs ?? SESSION_IDLE_INTERVAL_MS;
|
|
68
62
|
this.#activeThresholdMs = activeThresholdMs ?? SESSION_ACTIVE_THRESHOLD_MS;
|
|
69
|
-
this.#maxTransmissions = MRP_MAX_TRANSMISSIONS;
|
|
70
|
-
this.#useMRP = session.supportsMRP && !channel.isReliable;
|
|
71
63
|
this.#used = !isInitiator;
|
|
72
64
|
logger.debug(
|
|
73
65
|
"New exchange",
|
|
@@ -80,9 +72,9 @@ class MessageExchange {
|
|
|
80
72
|
SAT: this.#activeThresholdMs,
|
|
81
73
|
SAI: this.#activeIntervalMs,
|
|
82
74
|
SII: this.#idleIntervalMs,
|
|
83
|
-
maxTrans:
|
|
75
|
+
maxTrans: MRP.MAX_TRANSMISSIONS,
|
|
84
76
|
exchangeFlags: Diagnostic.asFlags({
|
|
85
|
-
MRP: this
|
|
77
|
+
MRP: this.channel.usesMrp,
|
|
86
78
|
I: this.isInitiator
|
|
87
79
|
})
|
|
88
80
|
})
|
|
@@ -121,10 +113,9 @@ class MessageExchange {
|
|
|
121
113
|
#activeIntervalMs;
|
|
122
114
|
#idleIntervalMs;
|
|
123
115
|
#activeThresholdMs;
|
|
124
|
-
#maxTransmissions;
|
|
125
116
|
#messagesQueue = new DataReadQueue();
|
|
126
117
|
#receivedMessageToAck;
|
|
127
|
-
#receivedMessageAckTimer = Time.getTimer("Ack receipt timeout",
|
|
118
|
+
#receivedMessageAckTimer = Time.getTimer("Ack receipt timeout", MRP.STANDALONE_ACK_TIMEOUT_MS, () => {
|
|
128
119
|
if (this.#receivedMessageToAck !== void 0) {
|
|
129
120
|
const messageToAck = this.#receivedMessageToAck;
|
|
130
121
|
this.#receivedMessageToAck = void 0;
|
|
@@ -149,7 +140,6 @@ class MessageExchange {
|
|
|
149
140
|
#protocolId;
|
|
150
141
|
#closed = AsyncObservable();
|
|
151
142
|
#closing = AsyncObservable();
|
|
152
|
-
#useMRP;
|
|
153
143
|
/** Emits when the exchange is actually closed. This happens after all Retries and Communication are done. */
|
|
154
144
|
get closed() {
|
|
155
145
|
return this.#closed;
|
|
@@ -185,12 +175,12 @@ class MessageExchange {
|
|
|
185
175
|
packetHeader: { messageId },
|
|
186
176
|
payloadHeader: { requiresAck }
|
|
187
177
|
} = message;
|
|
188
|
-
if (!requiresAck || !this
|
|
178
|
+
if (!requiresAck || !this.channel.usesMrp) return;
|
|
189
179
|
await this.send(SecureMessageType.StandaloneAck, new Uint8Array(0), { includeAcknowledgeMessageId: messageId });
|
|
190
180
|
}
|
|
191
181
|
async onMessageReceived(message, duplicate = false) {
|
|
192
182
|
logger.debug("Message \xAB", MessageCodec.messageDiagnostics(message, { duplicate }));
|
|
193
|
-
if (message.payloadHeader.requiresAck && !this
|
|
183
|
+
if (message.payloadHeader.requiresAck && !this.channel.usesMrp) {
|
|
194
184
|
logger.debug("Ignoring ack-required flag because MRP is not used for this exchange");
|
|
195
185
|
message.payloadHeader.requiresAck = false;
|
|
196
186
|
}
|
|
@@ -253,7 +243,7 @@ class MessageExchange {
|
|
|
253
243
|
await this.#messagesQueue.write(message);
|
|
254
244
|
}
|
|
255
245
|
async send(messageType, payload, options) {
|
|
256
|
-
if (options?.requiresAck && !this
|
|
246
|
+
if (options?.requiresAck && !this.channel.usesMrp) {
|
|
257
247
|
options.requiresAck = false;
|
|
258
248
|
}
|
|
259
249
|
const {
|
|
@@ -264,11 +254,11 @@ class MessageExchange {
|
|
|
264
254
|
includeAcknowledgeMessageId,
|
|
265
255
|
logContext
|
|
266
256
|
} = options ?? {};
|
|
267
|
-
if (!this
|
|
257
|
+
if (!this.channel.usesMrp && includeAcknowledgeMessageId !== void 0) {
|
|
268
258
|
throw new InternalError("Cannot include an acknowledge message ID when MRP is not used");
|
|
269
259
|
}
|
|
270
260
|
if (messageType === SecureMessageType.StandaloneAck) {
|
|
271
|
-
if (!this
|
|
261
|
+
if (!this.channel.usesMrp) {
|
|
272
262
|
return;
|
|
273
263
|
}
|
|
274
264
|
if (requiresAck) {
|
|
@@ -280,7 +270,7 @@ class MessageExchange {
|
|
|
280
270
|
this.#used = true;
|
|
281
271
|
this.session.notifyActivity(false);
|
|
282
272
|
let ackedMessageId = includeAcknowledgeMessageId;
|
|
283
|
-
if (ackedMessageId === void 0 && this
|
|
273
|
+
if (ackedMessageId === void 0 && this.channel.usesMrp) {
|
|
284
274
|
ackedMessageId = this.#receivedMessageToAck?.packetHeader.messageId;
|
|
285
275
|
if (ackedMessageId !== void 0) {
|
|
286
276
|
this.#receivedMessageAckTimer.stop();
|
|
@@ -329,18 +319,18 @@ class MessageExchange {
|
|
|
329
319
|
protocolId: messageType === SecureMessageType.StandaloneAck ? SECURE_CHANNEL_PROTOCOL_ID : this.#protocolId,
|
|
330
320
|
messageType,
|
|
331
321
|
isInitiatorMessage: this.isInitiator,
|
|
332
|
-
requiresAck: requiresAck ?? (this
|
|
322
|
+
requiresAck: requiresAck ?? (this.channel.usesMrp && messageType !== SecureMessageType.StandaloneAck),
|
|
333
323
|
ackedMessageId,
|
|
334
324
|
hasSecuredExtension: false
|
|
335
325
|
},
|
|
336
326
|
payload
|
|
337
327
|
};
|
|
338
328
|
let ackPromise;
|
|
339
|
-
if (this
|
|
329
|
+
if (this.channel.usesMrp && message.payloadHeader.requiresAck && !disableMrpLogic) {
|
|
340
330
|
this.#sentMessageToAck = message;
|
|
341
331
|
this.#retransmissionTimer = Time.getTimer(
|
|
342
332
|
`Message retransmission ${message.packetHeader.messageId}`,
|
|
343
|
-
this
|
|
333
|
+
this.channel.getMrpResubmissionBackOffTime(0),
|
|
344
334
|
() => this.#retransmitMessage(message, expectedProcessingTimeMs)
|
|
345
335
|
);
|
|
346
336
|
const { promise, resolver, rejecter } = createPromise();
|
|
@@ -370,61 +360,27 @@ class MessageExchange {
|
|
|
370
360
|
} else if (this.#messagesQueue.size > 0) {
|
|
371
361
|
timeout = 0;
|
|
372
362
|
} else {
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
case "udp":
|
|
378
|
-
if (!this.#useMRP) {
|
|
379
|
-
throw new MatterFlowError(
|
|
380
|
-
"No response expected for this message exchange because UDP and no MRP."
|
|
381
|
-
);
|
|
382
|
-
}
|
|
383
|
-
const { expectedProcessingTimeMs } = options ?? {};
|
|
384
|
-
timeout = this.calculateMaximumPeerResponseTime(expectedProcessingTimeMs);
|
|
385
|
-
break;
|
|
386
|
-
case "ble":
|
|
387
|
-
timeout = 3e4;
|
|
388
|
-
break;
|
|
389
|
-
default:
|
|
390
|
-
throw new MatterFlowError(
|
|
391
|
-
`Can not calculate expected timeout for unknown channel type: ${this.channel.type}`
|
|
392
|
-
);
|
|
393
|
-
}
|
|
394
|
-
timeout += PEER_RESPONSE_TIME_BUFFER_MS;
|
|
363
|
+
timeout = this.channel.calculateMaximumPeerResponseTimeMs(
|
|
364
|
+
this.context.localSessionParameters,
|
|
365
|
+
options?.expectedProcessingTimeMs
|
|
366
|
+
);
|
|
395
367
|
}
|
|
396
368
|
return this.#messagesQueue.read(timeout);
|
|
397
369
|
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
* side of the exchange.
|
|
403
|
-
*
|
|
404
|
-
* @see {@link MatterSpecification.v10.Core}, section 4.11.2.1
|
|
405
|
-
*/
|
|
406
|
-
#getResubmissionBackOffTime(retransmissionCount, sessionParameters) {
|
|
407
|
-
const { activeIntervalMs, idleIntervalMs } = sessionParameters ?? {
|
|
408
|
-
activeIntervalMs: this.#activeIntervalMs,
|
|
409
|
-
idleIntervalMs: this.#idleIntervalMs
|
|
410
|
-
};
|
|
411
|
-
const baseInterval = sessionParameters !== void 0 || this.session.isPeerActive() ? activeIntervalMs : idleIntervalMs;
|
|
412
|
-
return Math.floor(
|
|
413
|
-
MRP_BACKOFF_MARGIN * baseInterval * Math.pow(MRP_BACKOFF_BASE, Math.max(0, retransmissionCount - MRP_BACKOFF_THRESHOLD)) * (1 + (sessionParameters !== void 0 ? 1 : Math.random()) * MRP_BACKOFF_JITTER)
|
|
370
|
+
calculateMaximumPeerResponseTimeMs(expectedProcessingTimeMs = DEFAULT_EXPECTED_PROCESSING_TIME_MS) {
|
|
371
|
+
return this.channel.calculateMaximumPeerResponseTimeMs(
|
|
372
|
+
this.context.localSessionParameters,
|
|
373
|
+
expectedProcessingTimeMs
|
|
414
374
|
);
|
|
415
375
|
}
|
|
416
|
-
calculateMaximumPeerResponseTime(expectedProcessingTimeMs = DEFAULT_EXPECTED_PROCESSING_TIME_MS) {
|
|
417
|
-
let finalWaitTime = expectedProcessingTimeMs;
|
|
418
|
-
for (let i = 0; i < this.#maxTransmissions; i++) {
|
|
419
|
-
finalWaitTime += this.#getResubmissionBackOffTime(i, this.context.localSessionParameters);
|
|
420
|
-
}
|
|
421
|
-
return finalWaitTime;
|
|
422
|
-
}
|
|
423
376
|
#retransmitMessage(message, expectedProcessingTimeMs) {
|
|
424
377
|
this.#retransmissionCounter++;
|
|
425
|
-
if (this.#retransmissionCounter >=
|
|
378
|
+
if (this.#retransmissionCounter >= MRP.MAX_TRANSMISSIONS) {
|
|
426
379
|
if (expectedProcessingTimeMs !== void 0) {
|
|
427
|
-
const finalWaitTime = this.
|
|
380
|
+
const finalWaitTime = this.channel.calculateMaximumPeerResponseTimeMs(
|
|
381
|
+
this.context.localSessionParameters,
|
|
382
|
+
expectedProcessingTimeMs
|
|
383
|
+
) - (this.#retransmissionTimer?.intervalMs ?? 0);
|
|
428
384
|
if (finalWaitTime > 0) {
|
|
429
385
|
this.#retransmissionCounter--;
|
|
430
386
|
logger.debug(
|
|
@@ -453,7 +409,7 @@ class MessageExchange {
|
|
|
453
409
|
if (this.#retransmissionCounter === 1) {
|
|
454
410
|
this.context.resubmissionStarted();
|
|
455
411
|
}
|
|
456
|
-
const resubmissionBackoffTime = this
|
|
412
|
+
const resubmissionBackoffTime = this.channel.getMrpResubmissionBackOffTime(this.#retransmissionCounter);
|
|
457
413
|
logger.debug(
|
|
458
414
|
`Resubmit message ${message.packetHeader.messageId} (retransmission attempt ${this.#retransmissionCounter}, backoff time ${resubmissionBackoffTime}ms))`
|
|
459
415
|
);
|
|
@@ -554,8 +510,8 @@ class MessageExchange {
|
|
|
554
510
|
return this.#close();
|
|
555
511
|
}
|
|
556
512
|
let maxResubmissionTime = 0;
|
|
557
|
-
for (let i = this.#retransmissionCounter; i <=
|
|
558
|
-
maxResubmissionTime += this
|
|
513
|
+
for (let i = this.#retransmissionCounter; i <= MRP.MAX_TRANSMISSIONS; i++) {
|
|
514
|
+
maxResubmissionTime += this.channel.getMrpResubmissionBackOffTime(i);
|
|
559
515
|
}
|
|
560
516
|
this.#closeTimer = Time.getTimer(
|
|
561
517
|
`Message exchange cleanup ${this.session.name} / ${this.#exchangeId}`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/protocol/MessageExchange.ts"],
|
|
4
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["messageType", "error"]
|
|
6
6
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { GeneralStatusCode, Schema } from "#types";
|
|
7
|
+
export type ProtocolStatusMessage<T> = {
|
|
8
|
+
generalStatus: GeneralStatusCode;
|
|
9
|
+
protocolId: number;
|
|
10
|
+
protocolStatus: T;
|
|
11
|
+
protocolData?: Uint8Array;
|
|
12
|
+
};
|
|
13
|
+
export declare abstract class ProtocolStatusMessageSchema<T extends ProtocolStatusMessage<any>> extends Schema<T, Uint8Array> {
|
|
14
|
+
#private;
|
|
15
|
+
constructor(protocolId: number, protocolSpecificDataAllowed?: boolean);
|
|
16
|
+
encode(message: Omit<T, "protocolId">): Uint8Array;
|
|
17
|
+
encodeInternal({ generalStatus, protocolStatus, protocolId, protocolData }: T): Uint8Array<ArrayBuffer>;
|
|
18
|
+
decodeInternal(bytes: Uint8Array): T;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ProtocolStatusMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProtocolStatusMessage.d.ts","sourceRoot":"","sources":["../../../src/protocol/ProtocolStatusMessage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEnD,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;IACnC,aAAa,EAAE,iBAAiB,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,CAAC,CAAC;IAClB,YAAY,CAAC,EAAE,UAAU,CAAC;CAC7B,CAAC;AAEF,8BAAsB,2BAA2B,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC;;gBAIrG,UAAU,EAAE,MAAM,EAAE,2BAA2B,UAAO;IAMzD,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,UAAU;IAI3D,cAAc,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,CAAC;IAW7E,cAAc,CAAC,KAAK,EAAE,UAAU,GAOuD,CAAC;CAE3F"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { DataReader, DataWriter, Endian } from "#general";
|
|
7
|
+
import { Schema } from "#types";
|
|
8
|
+
class ProtocolStatusMessageSchema extends Schema {
|
|
9
|
+
#protocolId;
|
|
10
|
+
#protocolSpecificDataAllowed;
|
|
11
|
+
constructor(protocolId, protocolSpecificDataAllowed = true) {
|
|
12
|
+
super();
|
|
13
|
+
this.#protocolId = protocolId;
|
|
14
|
+
this.#protocolSpecificDataAllowed = protocolSpecificDataAllowed;
|
|
15
|
+
}
|
|
16
|
+
encode(message) {
|
|
17
|
+
return super.encode({ ...message, protocolId: this.#protocolId });
|
|
18
|
+
}
|
|
19
|
+
encodeInternal({ generalStatus, protocolStatus, protocolId, protocolData }) {
|
|
20
|
+
const writer = new DataWriter(Endian.Little);
|
|
21
|
+
writer.writeUInt16(generalStatus);
|
|
22
|
+
writer.writeUInt32(protocolId);
|
|
23
|
+
writer.writeUInt16(protocolStatus);
|
|
24
|
+
if (this.#protocolSpecificDataAllowed && protocolData !== void 0 && protocolData.length > 0) {
|
|
25
|
+
writer.writeByteArray(protocolData);
|
|
26
|
+
}
|
|
27
|
+
return writer.toByteArray();
|
|
28
|
+
}
|
|
29
|
+
decodeInternal(bytes) {
|
|
30
|
+
const reader = new DataReader(bytes, Endian.Little);
|
|
31
|
+
const generalStatus = reader.readUInt16();
|
|
32
|
+
const protocolId = reader.readUInt32();
|
|
33
|
+
const protocolStatus = reader.readUInt16();
|
|
34
|
+
const remainingBytes = reader.remainingBytesCount > 0 ? reader.remainingBytes : void 0;
|
|
35
|
+
return { generalStatus, protocolId, protocolStatus, remainingBytes };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
ProtocolStatusMessageSchema
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=ProtocolStatusMessage.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/protocol/ProtocolStatusMessage.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY,YAAY,cAAc;AAC/C,SAA4B,cAAc;AASnC,MAAe,oCAA0E,OAAsB;AAAA,EAClH;AAAA,EACA;AAAA,EAEA,YAAY,YAAoB,8BAA8B,MAAM;AAChE,UAAM;AACN,SAAK,cAAc;AACnB,SAAK,+BAA+B;AAAA,EACxC;AAAA,EAES,OAAO,SAA4C;AACxD,WAAO,MAAM,OAAO,EAAE,GAAG,SAAS,YAAY,KAAK,YAAY,CAAM;AAAA,EACzE;AAAA,EAEA,eAAe,EAAE,eAAe,gBAAgB,YAAY,aAAa,GAAM;AAC3E,UAAM,SAAS,IAAI,WAAW,OAAO,MAAM;AAC3C,WAAO,YAAY,aAAa;AAChC,WAAO,YAAY,UAAU;AAC7B,WAAO,YAAY,cAAc;AACjC,QAAI,KAAK,gCAAgC,iBAAiB,UAAa,aAAa,SAAS,GAAG;AAC5F,aAAO,eAAe,YAAY;AAAA,IACtC;AACA,WAAO,OAAO,YAAY;AAAA,EAC9B;AAAA,EAEA,eAAe,OAAmB;AAC9B,UAAM,SAAS,IAAI,WAAW,OAAO,OAAO,MAAM;AAClD,UAAM,gBAAgB,OAAO,WAAW;AACxC,UAAM,aAAa,OAAO,WAAW;AACrC,UAAM,iBAAiB,OAAO,WAAW;AACzC,UAAM,iBAAiB,OAAO,sBAAsB,IAAI,OAAO,iBAAiB;AAEhF,WAAO,EAAE,eAAe,YAAY,gBAAgB,eAAe;AAAA,EACvE;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -8,8 +8,10 @@ export * from "./DeviceAdvertiser.js";
|
|
|
8
8
|
export * from "./DeviceCommissioner.js";
|
|
9
9
|
export * from "./ExchangeManager.js";
|
|
10
10
|
export * from "./ExchangeProvider.js";
|
|
11
|
+
export * from "./MessageChannel.js";
|
|
11
12
|
export * from "./MessageCounter.js";
|
|
12
13
|
export * from "./MessageExchange.js";
|
|
13
14
|
export * from "./MessageReceptionState.js";
|
|
14
15
|
export * from "./ProtocolHandler.js";
|
|
16
|
+
export * from "./ProtocolStatusMessage.js";
|
|
15
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/protocol/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/protocol/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC"}
|
|
@@ -8,8 +8,10 @@ export * from "./DeviceAdvertiser.js";
|
|
|
8
8
|
export * from "./DeviceCommissioner.js";
|
|
9
9
|
export * from "./ExchangeManager.js";
|
|
10
10
|
export * from "./ExchangeProvider.js";
|
|
11
|
+
export * from "./MessageChannel.js";
|
|
11
12
|
export * from "./MessageCounter.js";
|
|
12
13
|
export * from "./MessageExchange.js";
|
|
13
14
|
export * from "./MessageReceptionState.js";
|
|
14
15
|
export * from "./ProtocolHandler.js";
|
|
16
|
+
export * from "./ProtocolStatusMessage.js";
|
|
15
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/protocol/index.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { MatterError } from "#general";
|
|
7
|
-
import { GeneralStatusCode,
|
|
7
|
+
import { GeneralStatusCode, SecureChannelStatusCode, TlvSchema } from "#types";
|
|
8
8
|
import { Message } from "../codec/MessageCodec.js";
|
|
9
9
|
import { ExchangeSendOptions, MessageExchange } from "../protocol/MessageExchange.js";
|
|
10
10
|
/** Error base Class for all errors related to the status response messages. */
|
|
11
11
|
export declare class ChannelStatusResponseError extends MatterError {
|
|
12
12
|
readonly generalStatusCode: GeneralStatusCode;
|
|
13
|
-
readonly protocolStatusCode:
|
|
14
|
-
constructor(message: string, generalStatusCode: GeneralStatusCode, protocolStatusCode:
|
|
13
|
+
readonly protocolStatusCode: SecureChannelStatusCode;
|
|
14
|
+
constructor(message: string, generalStatusCode: GeneralStatusCode, protocolStatusCode: SecureChannelStatusCode);
|
|
15
15
|
}
|
|
16
16
|
/** This value is used by chip SDK when performance wise heavy crypto operations are expected. */
|
|
17
17
|
export declare const EXPECTED_CRYPTO_PROCESSING_TIME_MS = 30000;
|
|
@@ -40,12 +40,11 @@ export declare class SecureChannelMessenger {
|
|
|
40
40
|
* EXPECTED_CRYPTO_PROCESSING_TIME_MS.
|
|
41
41
|
*/
|
|
42
42
|
send<T>(message: T, type: number, schema: TlvSchema<T>, options?: ExchangeSendOptions): Promise<Uint8Array<ArrayBufferLike>>;
|
|
43
|
-
sendError(code:
|
|
43
|
+
sendError(code: SecureChannelStatusCode): Promise<void>;
|
|
44
44
|
sendSuccess(): Promise<void>;
|
|
45
45
|
sendCloseSession(): Promise<void>;
|
|
46
46
|
getChannelName(): string;
|
|
47
47
|
close(): Promise<void>;
|
|
48
|
-
private sendStatusReport;
|
|
49
48
|
protected throwIfErrorStatusReport(message: Message, logHint?: string): void;
|
|
50
49
|
}
|
|
51
50
|
//# sourceMappingURL=SecureChannelMessenger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SecureChannelMessenger.d.ts","sourceRoot":"","sources":["../../../src/securechannel/SecureChannelMessenger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAc,WAAW,EAAuB,MAAM,UAAU,CAAC;AACxE,OAAO,
|
|
1
|
+
{"version":3,"file":"SecureChannelMessenger.d.ts","sourceRoot":"","sources":["../../../src/securechannel/SecureChannelMessenger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAc,WAAW,EAAuB,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAqB,SAAS,EAAE,MAAM,QAAQ,CAAC;AAClG,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGtF,+EAA+E;AAC/E,qBAAa,0BAA2B,SAAQ,WAAW;aAGnC,iBAAiB,EAAE,iBAAiB;aACpC,kBAAkB,EAAE,uBAAuB;gBAF3D,OAAO,EAAE,MAAM,EACC,iBAAiB,EAAE,iBAAiB,EACpC,kBAAkB,EAAE,uBAAuB;CAMlE;AAED,iGAAiG;AACjG,eAAO,MAAM,kCAAkC,QAAS,CAAC;AAEzD,8EAA8E;AAC9E,eAAO,MAAM,iCAAiC,OAAQ,CAAC;AAEvD,qBAAa,sBAAsB;;IAI3B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe;gBAAzB,QAAQ,EAAE,eAAe,EAC5C,+BAA+B,SAAqC;IAKxE,IAAI,OAAO,yCAEV;IAEK,WAAW,CACb,mBAAmB,EAAE,MAAM,EAC3B,wBAAwB,SAAwC,EAChE,mBAAmB,CAAC,EAAE,MAAM;IAK1B,cAAc,CAChB,mBAAmB,EAAE,MAAM,EAC3B,wBAAwB,SAAwC;IA2BpE;;;OAGG;IACG,kBAAkB,CAAC,CAAC,EACtB,mBAAmB,EAAE,MAAM,EAC3B,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,wBAAwB,SAAwC;IAKpE;;;OAGG;IACG,cAAc,CAChB,mBAAmB,EAAE,MAAM,EAC3B,wBAAwB,SAAwC;IAMpE;;;;OAIG;IACG,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB;IAU3F,SAAS,CAAC,IAAI,EAAE,uBAAuB;IAIvC,WAAW;IAIX,gBAAgB;IAIhB,cAAc;IAIR,KAAK;IAyBX,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM;CAuBxE"}
|
|
@@ -4,17 +4,12 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { Diagnostic, MatterError, UnexpectedDataError } from "#general";
|
|
7
|
-
import {
|
|
8
|
-
GeneralStatusCode,
|
|
9
|
-
ProtocolStatusCode,
|
|
10
|
-
SECURE_CHANNEL_PROTOCOL_ID,
|
|
11
|
-
SecureMessageType
|
|
12
|
-
} from "#types";
|
|
7
|
+
import { GeneralStatusCode, SecureChannelStatusCode, SecureMessageType } from "#types";
|
|
13
8
|
import { TlvSecureChannelStatusMessage } from "./SecureChannelStatusMessageSchema.js";
|
|
14
9
|
class ChannelStatusResponseError extends MatterError {
|
|
15
10
|
constructor(message, generalStatusCode, protocolStatusCode) {
|
|
16
11
|
super(
|
|
17
|
-
`(${GeneralStatusCode[generalStatusCode]} (${generalStatusCode}) / ${
|
|
12
|
+
`(${GeneralStatusCode[generalStatusCode]} (${generalStatusCode}) / ${SecureChannelStatusCode[protocolStatusCode]} (${protocolStatusCode})) ${message}`
|
|
18
13
|
);
|
|
19
14
|
this.generalStatusCode = generalStatusCode;
|
|
20
15
|
this.protocolStatusCode = protocolStatusCode;
|
|
@@ -83,13 +78,13 @@ class SecureChannelMessenger {
|
|
|
83
78
|
return payload;
|
|
84
79
|
}
|
|
85
80
|
sendError(code) {
|
|
86
|
-
return this
|
|
81
|
+
return this.#sendStatusReport(GeneralStatusCode.Failure, code);
|
|
87
82
|
}
|
|
88
83
|
sendSuccess() {
|
|
89
|
-
return this
|
|
84
|
+
return this.#sendStatusReport(GeneralStatusCode.Success, SecureChannelStatusCode.Success);
|
|
90
85
|
}
|
|
91
86
|
sendCloseSession() {
|
|
92
|
-
return this
|
|
87
|
+
return this.#sendStatusReport(GeneralStatusCode.Success, SecureChannelStatusCode.CloseSession, false);
|
|
93
88
|
}
|
|
94
89
|
getChannelName() {
|
|
95
90
|
return this.exchange.channel.channel.name;
|
|
@@ -97,19 +92,18 @@ class SecureChannelMessenger {
|
|
|
97
92
|
async close() {
|
|
98
93
|
await this.exchange.close();
|
|
99
94
|
}
|
|
100
|
-
async sendStatusReport(generalStatus, protocolStatus, requiresAck) {
|
|
95
|
+
async #sendStatusReport(generalStatus, protocolStatus, requiresAck) {
|
|
101
96
|
await this.exchange.send(
|
|
102
97
|
SecureMessageType.StatusReport,
|
|
103
98
|
TlvSecureChannelStatusMessage.encode({
|
|
104
99
|
generalStatus,
|
|
105
|
-
protocolId: SECURE_CHANNEL_PROTOCOL_ID,
|
|
106
100
|
protocolStatus
|
|
107
101
|
}),
|
|
108
102
|
{
|
|
109
103
|
requiresAck,
|
|
110
104
|
logContext: {
|
|
111
105
|
generalStatus: GeneralStatusCode[generalStatus] ?? Diagnostic.hex(generalStatus),
|
|
112
|
-
protocolStatus:
|
|
106
|
+
protocolStatus: SecureChannelStatusCode[protocolStatus] ?? Diagnostic.hex(protocolStatus)
|
|
113
107
|
}
|
|
114
108
|
}
|
|
115
109
|
);
|
|
@@ -128,7 +122,7 @@ class SecureChannelMessenger {
|
|
|
128
122
|
protocolStatus
|
|
129
123
|
);
|
|
130
124
|
}
|
|
131
|
-
if (protocolStatus !==
|
|
125
|
+
if (protocolStatus !== SecureChannelStatusCode.Success) {
|
|
132
126
|
throw new ChannelStatusResponseError(
|
|
133
127
|
`Received general success status, but protocol status is not Success${logHint ? ` (${logHint})` : ""}`,
|
|
134
128
|
generalStatus,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/securechannel/SecureChannelMessenger.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,YAAY,aAAa,2BAA2B;AAC7D
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -9,8 +9,8 @@ import { ExchangeManager } from "#protocol/ExchangeManager.js";
|
|
|
9
9
|
import { SessionManager } from "#session/SessionManager.js";
|
|
10
10
|
import {
|
|
11
11
|
GeneralStatusCode,
|
|
12
|
-
ProtocolStatusCode,
|
|
13
12
|
SECURE_CHANNEL_PROTOCOL_ID,
|
|
13
|
+
SecureChannelStatusCode,
|
|
14
14
|
SecureMessageType,
|
|
15
15
|
StatusCode,
|
|
16
16
|
StatusResponseError
|
|
@@ -59,7 +59,7 @@ class StatusReportOnlySecureChannelProtocol {
|
|
|
59
59
|
protocolStatus
|
|
60
60
|
);
|
|
61
61
|
}
|
|
62
|
-
if (protocolStatus !==
|
|
62
|
+
if (protocolStatus !== SecureChannelStatusCode.CloseSession) {
|
|
63
63
|
throw new ChannelStatusResponseError(
|
|
64
64
|
`Received general success status, but protocol status is not CloseSession`,
|
|
65
65
|
generalStatus,
|
|
@@ -106,7 +106,7 @@ class SecureChannelProtocol extends StatusReportOnlySecureChannelProtocol {
|
|
|
106
106
|
case SecureMessageType.PbkdfParamRequest:
|
|
107
107
|
if (this.#paseCommissioner === void 0) {
|
|
108
108
|
const messenger = new SecureChannelMessenger(exchange);
|
|
109
|
-
await messenger.sendError(
|
|
109
|
+
await messenger.sendError(SecureChannelStatusCode.InvalidParam);
|
|
110
110
|
await messenger.close();
|
|
111
111
|
return;
|
|
112
112
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/securechannel/SecureChannelProtocol.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,qBAAqB;AAC9B,SAAS,iBAA8B,eAAe,QAAQ,uBAAuB;AACrF,SAAS,uBAAuB;AAChC,SAAS,sBAAsB;AAC/B;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAIP,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,4CAAwD;AACjE,SAAS,4BAA4B,8BAA8B;AACnE,SAAS,qCAAqC;AAE9C,MAAM,SAAS,OAAO,IAAI,uBAAuB;AAE1C,MAAM,sCAAiE;AAAA,EACjE,KAAK;AAAA,EACL,wBAAwB;AAAA,EAEjC,MAAM,cAAc,UAA2B,SAAkB;AAC7D,UAAM,cAAc,QAAQ,cAAc;AAE1C,YAAQ,aAAa;AAAA,MACjB,KAAK,kBAAkB;AACnB,cAAM,KAAK,0BAA0B,UAAU,OAAO;AACtD;AAAA,MACJ;AAEI,YAAI,gBAAgB,kBAAkB,eAAe;AACjD,gBAAM,IAAI;AAAA,YACN,0DAA0D,YAAY,SAAS,EAAE,CAAC;AAAA,YAClF,WAAW;AAAA,UACf;AAAA,QACJ;AAAA,IACR;AAAA,EACJ;AAAA,EAEA,MAAM,0BAA0B,UAA2B,SAAkB;AACzE,UAAM;AAAA,MACF,eAAe,EAAE,YAAY;AAAA,MAC7B;AAAA,IACJ,IAAI;AACJ,QAAI,gBAAgB,kBAAkB,cAAc;AAChD,YAAM,IAAI;AAAA,QACN,8EAA8E,YAAY;AAAA,UACtF;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AAEA,UAAM,EAAE,eAAe,YAAY,eAAe,IAAI,8BAA8B,OAAO,OAAO;AAClG,QAAI,kBAAkB,kBAAkB,SAAS;AAC7C,YAAM,IAAI;AAAA,QACN,kCAAkC,UAAU;AAAA,QAC5C;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,mBAAmB,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -3,21 +3,10 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
protocolStatus: ProtocolStatusCode;
|
|
11
|
-
protocolData?: Uint8Array;
|
|
12
|
-
};
|
|
13
|
-
export declare class SecureChannelStatusMessageSchema extends Schema<StatusMessage, Uint8Array> {
|
|
14
|
-
encodeInternal({ generalStatus, protocolId, protocolStatus, protocolData }: StatusMessage): Uint8Array<ArrayBuffer>;
|
|
15
|
-
decodeInternal(bytes: Uint8Array): {
|
|
16
|
-
generalStatus: number;
|
|
17
|
-
protocolId: number;
|
|
18
|
-
protocolStatus: number;
|
|
19
|
-
remainingBytes: Uint8Array<ArrayBufferLike> | undefined;
|
|
20
|
-
};
|
|
6
|
+
import { ProtocolStatusMessage, ProtocolStatusMessageSchema } from "#protocol/ProtocolStatusMessage.js";
|
|
7
|
+
import { SecureChannelStatusCode } from "#types";
|
|
8
|
+
export type SecureChannelStatusMessage = ProtocolStatusMessage<SecureChannelStatusCode>;
|
|
9
|
+
export declare class SecureChannelStatusMessageSchema extends ProtocolStatusMessageSchema<SecureChannelStatusMessage> {
|
|
21
10
|
}
|
|
22
11
|
export declare const TlvSecureChannelStatusMessage: SecureChannelStatusMessageSchema;
|
|
23
12
|
//# sourceMappingURL=SecureChannelStatusMessageSchema.d.ts.map
|