@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
|
@@ -25,12 +25,13 @@ __export(MessageExchange_exports, {
|
|
|
25
25
|
UnexpectedMessageError: () => UnexpectedMessageError
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(MessageExchange_exports);
|
|
28
|
+
var import_MessageCodec = require("#codec/MessageCodec.js");
|
|
28
29
|
var import_general = require("#general");
|
|
29
|
-
var
|
|
30
|
+
var import_MessageChannel = require("#protocol/MessageChannel.js");
|
|
31
|
+
var import_SecureChannelProtocol = require("#securechannel/SecureChannelProtocol.js");
|
|
32
|
+
var import_GroupSession = require("#session/GroupSession.js");
|
|
33
|
+
var import_Session = require("#session/Session.js");
|
|
30
34
|
var import_types = require("#types");
|
|
31
|
-
var import_MessageCodec = require("../codec/MessageCodec.js");
|
|
32
|
-
var import_SecureChannelProtocol = require("../securechannel/SecureChannelProtocol.js");
|
|
33
|
-
var import_Session = require("../session/Session.js");
|
|
34
35
|
var import_ExchangeManager = require("./ExchangeManager.js");
|
|
35
36
|
/**
|
|
36
37
|
* @license
|
|
@@ -46,14 +47,7 @@ class UnexpectedMessageError extends import_general.MatterError {
|
|
|
46
47
|
this.receivedMessage = receivedMessage;
|
|
47
48
|
}
|
|
48
49
|
}
|
|
49
|
-
const MRP_MAX_TRANSMISSIONS = 5;
|
|
50
|
-
const MRP_BACKOFF_BASE = 1.6;
|
|
51
|
-
const MRP_BACKOFF_JITTER = 0.25;
|
|
52
|
-
const MRP_BACKOFF_MARGIN = 1.1;
|
|
53
|
-
const MRP_BACKOFF_THRESHOLD = 1;
|
|
54
|
-
const MRP_STANDALONE_ACK_TIMEOUT_MS = 200;
|
|
55
50
|
const DEFAULT_EXPECTED_PROCESSING_TIME_MS = 2e3;
|
|
56
|
-
const PEER_RESPONSE_TIME_BUFFER_MS = 5e3;
|
|
57
51
|
const MATTER_MESSAGE_OVERHEAD = 26 + 12 + import_general.CRYPTO_AEAD_MIC_LENGTH_BYTES;
|
|
58
52
|
class MessageExchange {
|
|
59
53
|
constructor(context, isInitiator, peerSessionId, nodeId, peerNodeId, exchangeId, protocolId, requiresSecureSession) {
|
|
@@ -71,8 +65,6 @@ class MessageExchange {
|
|
|
71
65
|
this.#activeIntervalMs = activeIntervalMs ?? import_Session.SESSION_ACTIVE_INTERVAL_MS;
|
|
72
66
|
this.#idleIntervalMs = idleIntervalMs ?? import_Session.SESSION_IDLE_INTERVAL_MS;
|
|
73
67
|
this.#activeThresholdMs = activeThresholdMs ?? import_Session.SESSION_ACTIVE_THRESHOLD_MS;
|
|
74
|
-
this.#maxTransmissions = MRP_MAX_TRANSMISSIONS;
|
|
75
|
-
this.#useMRP = session.supportsMRP && !channel.isReliable;
|
|
76
68
|
this.#used = !isInitiator;
|
|
77
69
|
logger.debug(
|
|
78
70
|
"New exchange",
|
|
@@ -85,9 +77,9 @@ class MessageExchange {
|
|
|
85
77
|
SAT: this.#activeThresholdMs,
|
|
86
78
|
SAI: this.#activeIntervalMs,
|
|
87
79
|
SII: this.#idleIntervalMs,
|
|
88
|
-
maxTrans:
|
|
80
|
+
maxTrans: import_MessageChannel.MRP.MAX_TRANSMISSIONS,
|
|
89
81
|
exchangeFlags: import_general.Diagnostic.asFlags({
|
|
90
|
-
MRP: this
|
|
82
|
+
MRP: this.channel.usesMrp,
|
|
91
83
|
I: this.isInitiator
|
|
92
84
|
})
|
|
93
85
|
})
|
|
@@ -126,10 +118,9 @@ class MessageExchange {
|
|
|
126
118
|
#activeIntervalMs;
|
|
127
119
|
#idleIntervalMs;
|
|
128
120
|
#activeThresholdMs;
|
|
129
|
-
#maxTransmissions;
|
|
130
121
|
#messagesQueue = new import_general.DataReadQueue();
|
|
131
122
|
#receivedMessageToAck;
|
|
132
|
-
#receivedMessageAckTimer = import_general.Time.getTimer("Ack receipt timeout",
|
|
123
|
+
#receivedMessageAckTimer = import_general.Time.getTimer("Ack receipt timeout", import_MessageChannel.MRP.STANDALONE_ACK_TIMEOUT_MS, () => {
|
|
133
124
|
if (this.#receivedMessageToAck !== void 0) {
|
|
134
125
|
const messageToAck = this.#receivedMessageToAck;
|
|
135
126
|
this.#receivedMessageToAck = void 0;
|
|
@@ -154,7 +145,6 @@ class MessageExchange {
|
|
|
154
145
|
#protocolId;
|
|
155
146
|
#closed = (0, import_general.AsyncObservable)();
|
|
156
147
|
#closing = (0, import_general.AsyncObservable)();
|
|
157
|
-
#useMRP;
|
|
158
148
|
/** Emits when the exchange is actually closed. This happens after all Retries and Communication are done. */
|
|
159
149
|
get closed() {
|
|
160
150
|
return this.#closed;
|
|
@@ -190,12 +180,12 @@ class MessageExchange {
|
|
|
190
180
|
packetHeader: { messageId },
|
|
191
181
|
payloadHeader: { requiresAck }
|
|
192
182
|
} = message;
|
|
193
|
-
if (!requiresAck || !this
|
|
183
|
+
if (!requiresAck || !this.channel.usesMrp) return;
|
|
194
184
|
await this.send(import_types.SecureMessageType.StandaloneAck, new Uint8Array(0), { includeAcknowledgeMessageId: messageId });
|
|
195
185
|
}
|
|
196
186
|
async onMessageReceived(message, duplicate = false) {
|
|
197
187
|
logger.debug("Message \xAB", import_MessageCodec.MessageCodec.messageDiagnostics(message, { duplicate }));
|
|
198
|
-
if (message.payloadHeader.requiresAck && !this
|
|
188
|
+
if (message.payloadHeader.requiresAck && !this.channel.usesMrp) {
|
|
199
189
|
logger.debug("Ignoring ack-required flag because MRP is not used for this exchange");
|
|
200
190
|
message.payloadHeader.requiresAck = false;
|
|
201
191
|
}
|
|
@@ -258,7 +248,7 @@ class MessageExchange {
|
|
|
258
248
|
await this.#messagesQueue.write(message);
|
|
259
249
|
}
|
|
260
250
|
async send(messageType, payload, options) {
|
|
261
|
-
if (options?.requiresAck && !this
|
|
251
|
+
if (options?.requiresAck && !this.channel.usesMrp) {
|
|
262
252
|
options.requiresAck = false;
|
|
263
253
|
}
|
|
264
254
|
const {
|
|
@@ -269,11 +259,11 @@ class MessageExchange {
|
|
|
269
259
|
includeAcknowledgeMessageId,
|
|
270
260
|
logContext
|
|
271
261
|
} = options ?? {};
|
|
272
|
-
if (!this
|
|
262
|
+
if (!this.channel.usesMrp && includeAcknowledgeMessageId !== void 0) {
|
|
273
263
|
throw new import_general.InternalError("Cannot include an acknowledge message ID when MRP is not used");
|
|
274
264
|
}
|
|
275
265
|
if (messageType === import_types.SecureMessageType.StandaloneAck) {
|
|
276
|
-
if (!this
|
|
266
|
+
if (!this.channel.usesMrp) {
|
|
277
267
|
return;
|
|
278
268
|
}
|
|
279
269
|
if (requiresAck) {
|
|
@@ -285,7 +275,7 @@ class MessageExchange {
|
|
|
285
275
|
this.#used = true;
|
|
286
276
|
this.session.notifyActivity(false);
|
|
287
277
|
let ackedMessageId = includeAcknowledgeMessageId;
|
|
288
|
-
if (ackedMessageId === void 0 && this
|
|
278
|
+
if (ackedMessageId === void 0 && this.channel.usesMrp) {
|
|
289
279
|
ackedMessageId = this.#receivedMessageToAck?.packetHeader.messageId;
|
|
290
280
|
if (ackedMessageId !== void 0) {
|
|
291
281
|
this.#receivedMessageAckTimer.stop();
|
|
@@ -306,7 +296,7 @@ class MessageExchange {
|
|
|
306
296
|
};
|
|
307
297
|
} else if (this.session.type === import_MessageCodec.SessionType.Group) {
|
|
308
298
|
const session = this.session;
|
|
309
|
-
if (!
|
|
299
|
+
if (!import_GroupSession.GroupSession.is(session)) {
|
|
310
300
|
throw new import_general.InternalError("Session is not a GroupSession, but session type is Group.");
|
|
311
301
|
}
|
|
312
302
|
const destGroupId = import_types.GroupId.fromNodeId(this.#peerNodeId);
|
|
@@ -334,18 +324,18 @@ class MessageExchange {
|
|
|
334
324
|
protocolId: messageType === import_types.SecureMessageType.StandaloneAck ? import_types.SECURE_CHANNEL_PROTOCOL_ID : this.#protocolId,
|
|
335
325
|
messageType,
|
|
336
326
|
isInitiatorMessage: this.isInitiator,
|
|
337
|
-
requiresAck: requiresAck ?? (this
|
|
327
|
+
requiresAck: requiresAck ?? (this.channel.usesMrp && messageType !== import_types.SecureMessageType.StandaloneAck),
|
|
338
328
|
ackedMessageId,
|
|
339
329
|
hasSecuredExtension: false
|
|
340
330
|
},
|
|
341
331
|
payload
|
|
342
332
|
};
|
|
343
333
|
let ackPromise;
|
|
344
|
-
if (this
|
|
334
|
+
if (this.channel.usesMrp && message.payloadHeader.requiresAck && !disableMrpLogic) {
|
|
345
335
|
this.#sentMessageToAck = message;
|
|
346
336
|
this.#retransmissionTimer = import_general.Time.getTimer(
|
|
347
337
|
`Message retransmission ${message.packetHeader.messageId}`,
|
|
348
|
-
this
|
|
338
|
+
this.channel.getMrpResubmissionBackOffTime(0),
|
|
349
339
|
() => this.#retransmitMessage(message, expectedProcessingTimeMs)
|
|
350
340
|
);
|
|
351
341
|
const { promise, resolver, rejecter } = (0, import_general.createPromise)();
|
|
@@ -375,61 +365,27 @@ class MessageExchange {
|
|
|
375
365
|
} else if (this.#messagesQueue.size > 0) {
|
|
376
366
|
timeout = 0;
|
|
377
367
|
} else {
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
case "udp":
|
|
383
|
-
if (!this.#useMRP) {
|
|
384
|
-
throw new import_general.MatterFlowError(
|
|
385
|
-
"No response expected for this message exchange because UDP and no MRP."
|
|
386
|
-
);
|
|
387
|
-
}
|
|
388
|
-
const { expectedProcessingTimeMs } = options ?? {};
|
|
389
|
-
timeout = this.calculateMaximumPeerResponseTime(expectedProcessingTimeMs);
|
|
390
|
-
break;
|
|
391
|
-
case "ble":
|
|
392
|
-
timeout = 3e4;
|
|
393
|
-
break;
|
|
394
|
-
default:
|
|
395
|
-
throw new import_general.MatterFlowError(
|
|
396
|
-
`Can not calculate expected timeout for unknown channel type: ${this.channel.type}`
|
|
397
|
-
);
|
|
398
|
-
}
|
|
399
|
-
timeout += PEER_RESPONSE_TIME_BUFFER_MS;
|
|
368
|
+
timeout = this.channel.calculateMaximumPeerResponseTimeMs(
|
|
369
|
+
this.context.localSessionParameters,
|
|
370
|
+
options?.expectedProcessingTimeMs
|
|
371
|
+
);
|
|
400
372
|
}
|
|
401
373
|
return this.#messagesQueue.read(timeout);
|
|
402
374
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
* side of the exchange.
|
|
408
|
-
*
|
|
409
|
-
* @see {@link MatterSpecification.v10.Core}, section 4.11.2.1
|
|
410
|
-
*/
|
|
411
|
-
#getResubmissionBackOffTime(retransmissionCount, sessionParameters) {
|
|
412
|
-
const { activeIntervalMs, idleIntervalMs } = sessionParameters ?? {
|
|
413
|
-
activeIntervalMs: this.#activeIntervalMs,
|
|
414
|
-
idleIntervalMs: this.#idleIntervalMs
|
|
415
|
-
};
|
|
416
|
-
const baseInterval = sessionParameters !== void 0 || this.session.isPeerActive() ? activeIntervalMs : idleIntervalMs;
|
|
417
|
-
return Math.floor(
|
|
418
|
-
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)
|
|
375
|
+
calculateMaximumPeerResponseTimeMs(expectedProcessingTimeMs = DEFAULT_EXPECTED_PROCESSING_TIME_MS) {
|
|
376
|
+
return this.channel.calculateMaximumPeerResponseTimeMs(
|
|
377
|
+
this.context.localSessionParameters,
|
|
378
|
+
expectedProcessingTimeMs
|
|
419
379
|
);
|
|
420
380
|
}
|
|
421
|
-
calculateMaximumPeerResponseTime(expectedProcessingTimeMs = DEFAULT_EXPECTED_PROCESSING_TIME_MS) {
|
|
422
|
-
let finalWaitTime = expectedProcessingTimeMs;
|
|
423
|
-
for (let i = 0; i < this.#maxTransmissions; i++) {
|
|
424
|
-
finalWaitTime += this.#getResubmissionBackOffTime(i, this.context.localSessionParameters);
|
|
425
|
-
}
|
|
426
|
-
return finalWaitTime;
|
|
427
|
-
}
|
|
428
381
|
#retransmitMessage(message, expectedProcessingTimeMs) {
|
|
429
382
|
this.#retransmissionCounter++;
|
|
430
|
-
if (this.#retransmissionCounter >=
|
|
383
|
+
if (this.#retransmissionCounter >= import_MessageChannel.MRP.MAX_TRANSMISSIONS) {
|
|
431
384
|
if (expectedProcessingTimeMs !== void 0) {
|
|
432
|
-
const finalWaitTime = this.
|
|
385
|
+
const finalWaitTime = this.channel.calculateMaximumPeerResponseTimeMs(
|
|
386
|
+
this.context.localSessionParameters,
|
|
387
|
+
expectedProcessingTimeMs
|
|
388
|
+
) - (this.#retransmissionTimer?.intervalMs ?? 0);
|
|
433
389
|
if (finalWaitTime > 0) {
|
|
434
390
|
this.#retransmissionCounter--;
|
|
435
391
|
logger.debug(
|
|
@@ -458,7 +414,7 @@ class MessageExchange {
|
|
|
458
414
|
if (this.#retransmissionCounter === 1) {
|
|
459
415
|
this.context.resubmissionStarted();
|
|
460
416
|
}
|
|
461
|
-
const resubmissionBackoffTime = this
|
|
417
|
+
const resubmissionBackoffTime = this.channel.getMrpResubmissionBackOffTime(this.#retransmissionCounter);
|
|
462
418
|
logger.debug(
|
|
463
419
|
`Resubmit message ${message.packetHeader.messageId} (retransmission attempt ${this.#retransmissionCounter}, backoff time ${resubmissionBackoffTime}ms))`
|
|
464
420
|
);
|
|
@@ -559,8 +515,8 @@ class MessageExchange {
|
|
|
559
515
|
return this.#close();
|
|
560
516
|
}
|
|
561
517
|
let maxResubmissionTime = 0;
|
|
562
|
-
for (let i = this.#retransmissionCounter; i <=
|
|
563
|
-
maxResubmissionTime += this
|
|
518
|
+
for (let i = this.#retransmissionCounter; i <= import_MessageChannel.MRP.MAX_TRANSMISSIONS; i++) {
|
|
519
|
+
maxResubmissionTime += this.channel.getMrpResubmissionBackOffTime(i);
|
|
564
520
|
}
|
|
565
521
|
this.#closeTimer = import_general.Time.getTimer(
|
|
566
522
|
`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,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var ProtocolStatusMessage_exports = {};
|
|
20
|
+
__export(ProtocolStatusMessage_exports, {
|
|
21
|
+
ProtocolStatusMessageSchema: () => ProtocolStatusMessageSchema
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(ProtocolStatusMessage_exports);
|
|
24
|
+
var import_general = require("#general");
|
|
25
|
+
var import_types = require("#types");
|
|
26
|
+
/**
|
|
27
|
+
* @license
|
|
28
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
29
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
30
|
+
*/
|
|
31
|
+
class ProtocolStatusMessageSchema extends import_types.Schema {
|
|
32
|
+
#protocolId;
|
|
33
|
+
#protocolSpecificDataAllowed;
|
|
34
|
+
constructor(protocolId, protocolSpecificDataAllowed = true) {
|
|
35
|
+
super();
|
|
36
|
+
this.#protocolId = protocolId;
|
|
37
|
+
this.#protocolSpecificDataAllowed = protocolSpecificDataAllowed;
|
|
38
|
+
}
|
|
39
|
+
encode(message) {
|
|
40
|
+
return super.encode({ ...message, protocolId: this.#protocolId });
|
|
41
|
+
}
|
|
42
|
+
encodeInternal({ generalStatus, protocolStatus, protocolId, protocolData }) {
|
|
43
|
+
const writer = new import_general.DataWriter(import_general.Endian.Little);
|
|
44
|
+
writer.writeUInt16(generalStatus);
|
|
45
|
+
writer.writeUInt32(protocolId);
|
|
46
|
+
writer.writeUInt16(protocolStatus);
|
|
47
|
+
if (this.#protocolSpecificDataAllowed && protocolData !== void 0 && protocolData.length > 0) {
|
|
48
|
+
writer.writeByteArray(protocolData);
|
|
49
|
+
}
|
|
50
|
+
return writer.toByteArray();
|
|
51
|
+
}
|
|
52
|
+
decodeInternal(bytes) {
|
|
53
|
+
const reader = new import_general.DataReader(bytes, import_general.Endian.Little);
|
|
54
|
+
const generalStatus = reader.readUInt16();
|
|
55
|
+
const protocolId = reader.readUInt32();
|
|
56
|
+
const protocolStatus = reader.readUInt16();
|
|
57
|
+
const remainingBytes = reader.remainingBytesCount > 0 ? reader.remainingBytes : void 0;
|
|
58
|
+
return { generalStatus, protocolId, protocolStatus, remainingBytes };
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# 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,qBAA+C;AAC/C,mBAA0C;AAP1C;AAAA;AAAA;AAAA;AAAA;AAgBO,MAAe,oCAA0E,oBAAsB;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,0BAAW,sBAAO,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,0BAAW,OAAO,sBAAO,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"}
|
|
@@ -20,10 +20,12 @@ __reExport(protocol_exports, require("./DeviceAdvertiser.js"), module.exports);
|
|
|
20
20
|
__reExport(protocol_exports, require("./DeviceCommissioner.js"), module.exports);
|
|
21
21
|
__reExport(protocol_exports, require("./ExchangeManager.js"), module.exports);
|
|
22
22
|
__reExport(protocol_exports, require("./ExchangeProvider.js"), module.exports);
|
|
23
|
+
__reExport(protocol_exports, require("./MessageChannel.js"), module.exports);
|
|
23
24
|
__reExport(protocol_exports, require("./MessageCounter.js"), module.exports);
|
|
24
25
|
__reExport(protocol_exports, require("./MessageExchange.js"), module.exports);
|
|
25
26
|
__reExport(protocol_exports, require("./MessageReceptionState.js"), module.exports);
|
|
26
27
|
__reExport(protocol_exports, require("./ProtocolHandler.js"), module.exports);
|
|
28
|
+
__reExport(protocol_exports, require("./ProtocolStatusMessage.js"), module.exports);
|
|
27
29
|
/**
|
|
28
30
|
* @license
|
|
29
31
|
* Copyright 2022-2025 Matter.js Authors
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/protocol/index.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,6BAAc,gCANd;AAOA,6BAAc,kCAPd;AAQA,6BAAc,oCARd;AASA,6BAAc,iCATd;AAUA,6BAAc,kCAVd;AAWA,6BAAc,gCAXd;AAYA,6BAAc,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,6BAAc,gCANd;AAOA,6BAAc,kCAPd;AAQA,6BAAc,oCARd;AASA,6BAAc,iCATd;AAUA,6BAAc,kCAVd;AAWA,6BAAc,gCAXd;AAYA,6BAAc,gCAZd;AAaA,6BAAc,iCAbd;AAcA,6BAAc,uCAdd;AAeA,6BAAc,iCAfd;AAgBA,6BAAc,uCAhBd;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
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"}
|
|
@@ -35,7 +35,7 @@ var import_SecureChannelStatusMessageSchema = require("./SecureChannelStatusMess
|
|
|
35
35
|
class ChannelStatusResponseError extends import_general.MatterError {
|
|
36
36
|
constructor(message, generalStatusCode, protocolStatusCode) {
|
|
37
37
|
super(
|
|
38
|
-
`(${import_types.GeneralStatusCode[generalStatusCode]} (${generalStatusCode}) / ${import_types.
|
|
38
|
+
`(${import_types.GeneralStatusCode[generalStatusCode]} (${generalStatusCode}) / ${import_types.SecureChannelStatusCode[protocolStatusCode]} (${protocolStatusCode})) ${message}`
|
|
39
39
|
);
|
|
40
40
|
this.generalStatusCode = generalStatusCode;
|
|
41
41
|
this.protocolStatusCode = protocolStatusCode;
|
|
@@ -104,13 +104,13 @@ class SecureChannelMessenger {
|
|
|
104
104
|
return payload;
|
|
105
105
|
}
|
|
106
106
|
sendError(code) {
|
|
107
|
-
return this
|
|
107
|
+
return this.#sendStatusReport(import_types.GeneralStatusCode.Failure, code);
|
|
108
108
|
}
|
|
109
109
|
sendSuccess() {
|
|
110
|
-
return this
|
|
110
|
+
return this.#sendStatusReport(import_types.GeneralStatusCode.Success, import_types.SecureChannelStatusCode.Success);
|
|
111
111
|
}
|
|
112
112
|
sendCloseSession() {
|
|
113
|
-
return this
|
|
113
|
+
return this.#sendStatusReport(import_types.GeneralStatusCode.Success, import_types.SecureChannelStatusCode.CloseSession, false);
|
|
114
114
|
}
|
|
115
115
|
getChannelName() {
|
|
116
116
|
return this.exchange.channel.channel.name;
|
|
@@ -118,19 +118,18 @@ class SecureChannelMessenger {
|
|
|
118
118
|
async close() {
|
|
119
119
|
await this.exchange.close();
|
|
120
120
|
}
|
|
121
|
-
async sendStatusReport(generalStatus, protocolStatus, requiresAck) {
|
|
121
|
+
async #sendStatusReport(generalStatus, protocolStatus, requiresAck) {
|
|
122
122
|
await this.exchange.send(
|
|
123
123
|
import_types.SecureMessageType.StatusReport,
|
|
124
124
|
import_SecureChannelStatusMessageSchema.TlvSecureChannelStatusMessage.encode({
|
|
125
125
|
generalStatus,
|
|
126
|
-
protocolId: import_types.SECURE_CHANNEL_PROTOCOL_ID,
|
|
127
126
|
protocolStatus
|
|
128
127
|
}),
|
|
129
128
|
{
|
|
130
129
|
requiresAck,
|
|
131
130
|
logContext: {
|
|
132
131
|
generalStatus: import_types.GeneralStatusCode[generalStatus] ?? import_general.Diagnostic.hex(generalStatus),
|
|
133
|
-
protocolStatus: import_types.
|
|
132
|
+
protocolStatus: import_types.SecureChannelStatusCode[protocolStatus] ?? import_general.Diagnostic.hex(protocolStatus)
|
|
134
133
|
}
|
|
135
134
|
}
|
|
136
135
|
);
|
|
@@ -149,7 +148,7 @@ class SecureChannelMessenger {
|
|
|
149
148
|
protocolStatus
|
|
150
149
|
);
|
|
151
150
|
}
|
|
152
|
-
if (protocolStatus !== import_types.
|
|
151
|
+
if (protocolStatus !== import_types.SecureChannelStatusCode.Success) {
|
|
153
152
|
throw new ChannelStatusResponseError(
|
|
154
153
|
`Received general success status, but protocol status is not Success${logHint ? ` (${logHint})` : ""}`,
|
|
155
154
|
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;AAAA;AAAA;AAAA;AAMA,qBAA6D;AAC7D,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA6D;AAC7D,mBAAyF;AAGzF,8CAA8C;AAV9C;AAAA;AAAA;AAAA;AAAA;AAaO,MAAM,mCAAmC,2BAAY;AAAA,EACjD,YACH,SACgB,mBACA,oBAClB;AACE;AAAA,MACI,IAAI,+BAAkB,iBAAiB,CAAC,KAAK,iBAAiB,OAAO,qCAAwB,kBAAkB,CAAC,KAAK,kBAAkB,MAAM,OAAO;AAAA,IACxJ;AALgB;AACA;AAAA,EAKpB;AACJ;AAGO,MAAM,qCAAqC;AAG3C,MAAM,oCAAoC;AAE1C,MAAM,uBAAuB;AAAA,EAGhC,YACuB,UACnB,kCAAkC,oCACpC;AAFqB;AAGnB,SAAK,mCAAmC;AAAA,EAC5C;AAAA,EAPA;AAAA,EASA,IAAI,UAAU;AACV,WAAO,KAAK,SAAS;AAAA,EACzB;AAAA,EAEA,MAAM,YACF,qBACA,2BAA2B,KAAK,kCAChC,qBACF;AACE,WAAO,KAAK,aAAa,qBAAqB,0BAA0B,mBAAmB;AAAA,EAC/F;AAAA,EAEA,MAAM,eACF,qBACA,2BAA2B,KAAK,kCAClC;AACE,WAAO,KAAK,aAAa,QAAW,0BAA0B,mBAAmB;AAAA,EACrF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aACF,qBACA,2BAA2B,KAAK,kCAChC,qBACF;AACE,UAAM,UAAU,MAAM,KAAK,SAAS,YAAY,EAAE,yBAAyB,CAAC;AAC5E,UAAM,cAAc,QAAQ,cAAc;AAC1C,QAAI,wBAAwB,UAAa,wBAAwB,QAAW;AACxE,4BAAsB,+BAAkB,mBAAmB;AAAA,IAC/D;AACA,SAAK,yBAAyB,SAAS,mBAAmB;AAC1D,QAAI,wBAAwB,UAAa,gBAAgB;AACrD,YAAM,IAAI;AAAA,QACN,qCAAqC,WAAW,eAAe,mBAAmB,KAAK,mBAAmB;AAAA,MAC9G;AACJ,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBACF,qBACA,QACA,2BAA2B,KAAK,kCAClC;AACE,WAAO,OAAO,QAAQ,MAAM,KAAK,YAAY,qBAAqB,wBAAwB,GAAG,OAAO;AAAA,EACxG;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eACF,qBACA,2BAA2B,KAAK,kCAClC;AAEE,UAAM,KAAK,YAAY,+BAAkB,cAAc,0BAA0B,mBAAmB;AAAA,EACxG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,KAAQ,SAAY,MAAc,QAAsB,SAA+B;AACzF,cAAU;AAAA,MACN,GAAG;AAAA,MACH,0BAA0B,SAAS,4BAA4B,KAAK;AAAA,IACxE;AACA,UAAM,UAAU,OAAO,OAAO,OAAO;AACrC,UAAM,KAAK,SAAS,KAAK,MAAM,SAAS,OAAO;AAC/C,WAAO;AAAA,EACX;AAAA,EAEA,UAAU,MAA+B;AACrC,WAAO,KAAK,kBAAkB,+BAAkB,SAAS,IAAI;AAAA,EACjE;AAAA,EAEA,cAAc;AACV,WAAO,KAAK,kBAAkB,+BAAkB,SAAS,qCAAwB,OAAO;AAAA,EAC5F;AAAA,EAEA,mBAAmB;AACf,WAAO,KAAK,kBAAkB,+BAAkB,SAAS,qCAAwB,cAAc,KAAK;AAAA,EACxG;AAAA,EAEA,iBAAiB;AACb,WAAO,KAAK,SAAS,QAAQ,QAAQ;AAAA,EACzC;AAAA,EAEA,MAAM,QAAQ;AACV,UAAM,KAAK,SAAS,MAAM;AAAA,EAC9B;AAAA,EAEA,MAAM,kBACF,eACA,gBACA,aACF;AACE,UAAM,KAAK,SAAS;AAAA,MAChB,+BAAkB;AAAA,MAClB,sEAA8B,OAAO;AAAA,QACjC;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,MACD;AAAA,QACI;AAAA,QACA,YAAY;AAAA,UACR,eAAe,+BAAkB,aAAa,KAAK,0BAAW,IAAI,aAAa;AAAA,UAC/E,gBAAgB,qCAAwB,cAAc,KAAK,0BAAW,IAAI,cAAc;AAAA,QAC5F;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEU,yBAAyB,SAAkB,SAAkB;AACnE,UAAM;AAAA,MACF,eAAe,EAAE,YAAY;AAAA,MAC7B;AAAA,IACJ,IAAI;AACJ,QAAI,gBAAgB,+BAAkB,aAAc;AAEpD,UAAM,EAAE,eAAe,YAAY,eAAe,IAAI,sEAA8B,OAAO,OAAO;AAClG,QAAI,kBAAkB,+BAAkB,SAAS;AAC7C,YAAM,IAAI;AAAA,QACN,8CAA8C,UAAU,GAAG,UAAU,KAAK,OAAO,MAAM,EAAE;AAAA,QACzF;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,mBAAmB,qCAAwB,SAAS;AACpD,YAAM,IAAI;AAAA,QACN,sEAAsE,UAAU,KAAK,OAAO,MAAM,EAAE;AAAA,QACpG;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -76,7 +76,7 @@ class StatusReportOnlySecureChannelProtocol {
|
|
|
76
76
|
protocolStatus
|
|
77
77
|
);
|
|
78
78
|
}
|
|
79
|
-
if (protocolStatus !== import_types.
|
|
79
|
+
if (protocolStatus !== import_types.SecureChannelStatusCode.CloseSession) {
|
|
80
80
|
throw new import_SecureChannelMessenger.ChannelStatusResponseError(
|
|
81
81
|
`Received general success status, but protocol status is not CloseSession`,
|
|
82
82
|
generalStatus,
|
|
@@ -123,7 +123,7 @@ class SecureChannelProtocol extends StatusReportOnlySecureChannelProtocol {
|
|
|
123
123
|
case import_types.SecureMessageType.PbkdfParamRequest:
|
|
124
124
|
if (this.#paseCommissioner === void 0) {
|
|
125
125
|
const messenger = new import_SecureChannelMessenger.SecureChannelMessenger(exchange);
|
|
126
|
-
await messenger.sendError(import_types.
|
|
126
|
+
await messenger.sendError(import_types.SecureChannelStatusCode.InvalidParam);
|
|
127
127
|
await messenger.close();
|
|
128
128
|
return;
|
|
129
129
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/securechannel/SecureChannelProtocol.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,2BAA8B;AAC9B,qBAAqF;AACrF,6BAAgC;AAChC,4BAA+B;AAC/B,mBAOO;AAIP,2BAA8B;AAC9B,wBAA2B;AAC3B,wBAAiE;AACjE,oCAAmE;AACnE,8CAA8C;AAzB9C;AAAA;AAAA;AAAA;AAAA;AA2BA,MAAM,SAAS,sBAAO,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,+BAAkB;AACnB,cAAM,KAAK,0BAA0B,UAAU,OAAO;AACtD;AAAA,MACJ;AAEI,YAAI,gBAAgB,+BAAkB,eAAe;AACjD,gBAAM,IAAI;AAAA,YACN,0DAA0D,YAAY,SAAS,EAAE,CAAC;AAAA,YAClF,wBAAW;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,+BAAkB,cAAc;AAChD,YAAM,IAAI;AAAA,QACN,8EAA8E,YAAY;AAAA,UACtF;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ;AAEA,UAAM,EAAE,eAAe,YAAY,eAAe,IAAI,sEAA8B,OAAO,OAAO;AAClG,QAAI,kBAAkB,+BAAkB,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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SecureChannelStatusMessageSchema.d.ts","sourceRoot":"","sources":["../../../src/securechannel/SecureChannelStatusMessageSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"SecureChannelStatusMessageSchema.d.ts","sourceRoot":"","sources":["../../../src/securechannel/SecureChannelStatusMessageSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACxG,OAAO,EAA8B,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAE7E,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;AAExF,qBAAa,gCAAiC,SAAQ,2BAA2B,CAAC,0BAA0B,CAAC;CAAG;AAEhH,eAAO,MAAM,6BAA6B,kCAAmE,CAAC"}
|