@matter/protocol 0.16.0-alpha.0-20250930-05e6cc3f8 → 0.16.0-alpha.0-20251003-dc6d5523d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/action/client/ReadScope.d.ts +4 -0
- package/dist/cjs/action/client/ReadScope.d.ts.map +1 -1
- package/dist/cjs/action/client/ReadScope.js +2 -1
- package/dist/cjs/action/client/ReadScope.js.map +1 -1
- package/dist/cjs/ble/Ble.d.ts +3 -3
- package/dist/cjs/ble/Ble.d.ts.map +1 -1
- package/dist/cjs/ble/Ble.js.map +1 -1
- package/dist/cjs/common/Scanner.d.ts +2 -2
- package/dist/cjs/common/Scanner.d.ts.map +1 -1
- package/dist/cjs/interaction/AttributeDataDecoder.d.ts +9 -7
- package/dist/cjs/interaction/AttributeDataDecoder.d.ts.map +1 -1
- package/dist/cjs/interaction/AttributeDataDecoder.js.map +1 -1
- package/dist/cjs/interaction/DecodedDataReport.d.ts +1 -0
- package/dist/cjs/interaction/DecodedDataReport.d.ts.map +1 -1
- package/dist/cjs/interaction/DecodedDataReport.js.map +1 -1
- package/dist/cjs/interaction/InteractionClient.d.ts +13 -3
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.js +94 -67
- package/dist/cjs/interaction/InteractionClient.js.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.d.ts +10 -90
- package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.js +98 -22
- package/dist/cjs/interaction/InteractionMessenger.js.map +2 -2
- package/dist/cjs/interaction/SubscriptionClient.d.ts +2 -2
- package/dist/cjs/interaction/SubscriptionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/SubscriptionClient.js +1 -1
- package/dist/cjs/interaction/SubscriptionClient.js.map +1 -1
- package/dist/cjs/mdns/MdnsClient.d.ts +3 -3
- package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.d.ts +2 -2
- package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/cjs/peer/ControllerCommissioner.js +7 -5
- package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
- package/dist/cjs/peer/OperationalPeer.d.ts +2 -2
- package/dist/cjs/peer/OperationalPeer.d.ts.map +1 -1
- package/dist/cjs/peer/PeerAddressStore.d.ts +3 -1
- package/dist/cjs/peer/PeerAddressStore.d.ts.map +1 -1
- package/dist/cjs/peer/PeerAddressStore.js.map +1 -1
- package/dist/cjs/peer/PeerSet.d.ts +3 -3
- package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
- package/dist/cjs/peer/PeerSet.js +14 -9
- package/dist/cjs/peer/PeerSet.js.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.d.ts +2 -2
- package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.js +21 -17
- package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
- package/dist/cjs/protocol/MessageChannel.d.ts +1 -1
- package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageChannel.js +7 -5
- package/dist/cjs/protocol/MessageChannel.js.map +1 -1
- package/dist/cjs/protocol/MessageExchange.d.ts +0 -1
- package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageExchange.js +6 -17
- package/dist/cjs/protocol/MessageExchange.js.map +1 -1
- package/dist/cjs/session/NodeSession.d.ts.map +1 -1
- package/dist/cjs/session/NodeSession.js +3 -3
- package/dist/cjs/session/NodeSession.js.map +1 -1
- package/dist/cjs/session/SessionIntervals.d.ts +1 -5
- package/dist/cjs/session/SessionIntervals.d.ts.map +1 -1
- package/dist/cjs/session/SessionIntervals.js.map +1 -1
- package/dist/cjs/session/case/CaseMessages.d.ts +18 -9
- package/dist/cjs/session/case/CaseMessages.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseMessages.js.map +1 -1
- package/dist/cjs/session/case/CaseMessenger.d.ts +4 -62
- package/dist/cjs/session/case/CaseMessenger.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseMessenger.js.map +1 -1
- package/dist/cjs/session/case/CaseServer.js.map +1 -1
- package/dist/cjs/session/pase/PaseMessages.d.ts +20 -9
- package/dist/cjs/session/pase/PaseMessages.d.ts.map +1 -1
- package/dist/cjs/session/pase/PaseMessages.js +3 -3
- package/dist/cjs/session/pase/PaseMessages.js.map +1 -1
- package/dist/cjs/session/pase/PaseMessenger.d.ts +3 -51
- package/dist/cjs/session/pase/PaseMessenger.d.ts.map +1 -1
- package/dist/cjs/session/pase/PaseMessenger.js.map +1 -1
- package/dist/esm/action/client/ReadScope.d.ts +4 -0
- package/dist/esm/action/client/ReadScope.d.ts.map +1 -1
- package/dist/esm/action/client/ReadScope.js +2 -1
- package/dist/esm/action/client/ReadScope.js.map +1 -1
- package/dist/esm/ble/Ble.d.ts +3 -3
- package/dist/esm/ble/Ble.d.ts.map +1 -1
- package/dist/esm/ble/Ble.js.map +1 -1
- package/dist/esm/common/Scanner.d.ts +2 -2
- package/dist/esm/common/Scanner.d.ts.map +1 -1
- package/dist/esm/interaction/AttributeDataDecoder.d.ts +9 -7
- package/dist/esm/interaction/AttributeDataDecoder.d.ts.map +1 -1
- package/dist/esm/interaction/AttributeDataDecoder.js.map +1 -1
- package/dist/esm/interaction/DecodedDataReport.d.ts +1 -0
- package/dist/esm/interaction/DecodedDataReport.d.ts.map +1 -1
- package/dist/esm/interaction/DecodedDataReport.js.map +1 -1
- package/dist/esm/interaction/InteractionClient.d.ts +13 -3
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.js +96 -68
- package/dist/esm/interaction/InteractionClient.js.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.d.ts +10 -90
- package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.js +98 -22
- package/dist/esm/interaction/InteractionMessenger.js.map +2 -2
- package/dist/esm/interaction/SubscriptionClient.d.ts +2 -2
- package/dist/esm/interaction/SubscriptionClient.d.ts.map +1 -1
- package/dist/esm/interaction/SubscriptionClient.js +1 -1
- package/dist/esm/interaction/SubscriptionClient.js.map +1 -1
- package/dist/esm/mdns/MdnsClient.d.ts +3 -3
- package/dist/esm/mdns/MdnsClient.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.d.ts +2 -2
- package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -1
- package/dist/esm/peer/ControllerCommissioner.js +9 -6
- package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
- package/dist/esm/peer/OperationalPeer.d.ts +2 -2
- package/dist/esm/peer/OperationalPeer.d.ts.map +1 -1
- package/dist/esm/peer/PeerAddressStore.d.ts +3 -1
- package/dist/esm/peer/PeerAddressStore.d.ts.map +1 -1
- package/dist/esm/peer/PeerAddressStore.js.map +1 -1
- package/dist/esm/peer/PeerSet.d.ts +3 -3
- package/dist/esm/peer/PeerSet.d.ts.map +1 -1
- package/dist/esm/peer/PeerSet.js +15 -10
- package/dist/esm/peer/PeerSet.js.map +1 -1
- package/dist/esm/protocol/ExchangeManager.d.ts +2 -2
- package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeManager.js +22 -18
- package/dist/esm/protocol/ExchangeManager.js.map +1 -1
- package/dist/esm/protocol/MessageChannel.d.ts +1 -1
- package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
- package/dist/esm/protocol/MessageChannel.js +7 -5
- package/dist/esm/protocol/MessageChannel.js.map +1 -1
- package/dist/esm/protocol/MessageExchange.d.ts +0 -1
- package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/esm/protocol/MessageExchange.js +6 -17
- package/dist/esm/protocol/MessageExchange.js.map +1 -1
- package/dist/esm/session/NodeSession.d.ts.map +1 -1
- package/dist/esm/session/NodeSession.js +4 -3
- package/dist/esm/session/NodeSession.js.map +1 -1
- package/dist/esm/session/SessionIntervals.d.ts +1 -5
- package/dist/esm/session/SessionIntervals.d.ts.map +1 -1
- package/dist/esm/session/SessionIntervals.js.map +1 -1
- package/dist/esm/session/case/CaseMessages.d.ts +18 -9
- package/dist/esm/session/case/CaseMessages.d.ts.map +1 -1
- package/dist/esm/session/case/CaseMessages.js.map +1 -1
- package/dist/esm/session/case/CaseMessenger.d.ts +4 -62
- package/dist/esm/session/case/CaseMessenger.d.ts.map +1 -1
- package/dist/esm/session/case/CaseMessenger.js +6 -1
- package/dist/esm/session/case/CaseMessenger.js.map +1 -1
- package/dist/esm/session/case/CaseServer.js.map +1 -1
- package/dist/esm/session/pase/PaseMessages.d.ts +20 -9
- package/dist/esm/session/pase/PaseMessages.d.ts.map +1 -1
- package/dist/esm/session/pase/PaseMessages.js +3 -3
- package/dist/esm/session/pase/PaseMessages.js.map +1 -1
- package/dist/esm/session/pase/PaseMessenger.d.ts +3 -51
- package/dist/esm/session/pase/PaseMessenger.d.ts.map +1 -1
- package/dist/esm/session/pase/PaseMessenger.js.map +1 -1
- package/package.json +6 -6
- package/src/action/client/ReadScope.ts +7 -0
- package/src/ble/Ble.ts +3 -3
- package/src/common/Scanner.ts +2 -2
- package/src/interaction/AttributeDataDecoder.ts +4 -1
- package/src/interaction/DecodedDataReport.ts +1 -0
- package/src/interaction/InteractionClient.ts +154 -79
- package/src/interaction/InteractionMessenger.ts +126 -22
- package/src/interaction/SubscriptionClient.ts +6 -5
- package/src/mdns/MdnsClient.ts +4 -4
- package/src/peer/ControllerCommissioner.ts +10 -7
- package/src/peer/OperationalPeer.ts +2 -2
- package/src/peer/PeerAddressStore.ts +3 -1
- package/src/peer/PeerSet.ts +23 -18
- package/src/protocol/ExchangeManager.ts +29 -21
- package/src/protocol/MessageChannel.ts +13 -11
- package/src/protocol/MessageExchange.ts +6 -18
- package/src/session/NodeSession.ts +4 -3
- package/src/session/SessionIntervals.ts +1 -1
- package/src/session/case/CaseMessages.ts +12 -2
- package/src/session/case/CaseMessenger.ts +12 -4
- package/src/session/case/CaseServer.ts +5 -5
- package/src/session/pase/PaseMessages.ts +27 -3
- package/src/session/pase/PaseMessenger.ts +8 -9
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
CRYPTO_HASH_LEN_BYTES,
|
|
11
11
|
CRYPTO_PUBLIC_KEY_SIZE_BYTES,
|
|
12
12
|
} from "#general";
|
|
13
|
-
import { TlvByteString, TlvField, TlvObject, TlvOptionalField, TlvUInt16 } from "#types";
|
|
14
|
-
import { TlvSessionParameters } from "../pase/PaseMessages.js";
|
|
13
|
+
import { TlvByteString, TlvField, TlvObject, TlvOptionalField, TlvUInt16, TypeFromSchema } from "#types";
|
|
14
|
+
import { TlvSessionParameters, WithDurationSessionParameters } from "../pase/PaseMessages.js";
|
|
15
15
|
|
|
16
16
|
const CASE_SIGNATURE_LENGTH = CRYPTO_GROUP_SIZE_BYTES * 2;
|
|
17
17
|
|
|
@@ -34,6 +34,7 @@ export const TlvCaseSigma1 = TlvObject({
|
|
|
34
34
|
resumptionId: TlvOptionalField(6, TlvByteString.bound({ length: 16 })),
|
|
35
35
|
initiatorResumeMic: TlvOptionalField(7, TlvByteString.bound({ length: CRYPTO_AEAD_MIC_LENGTH_BYTES })),
|
|
36
36
|
});
|
|
37
|
+
export type CaseSigma1 = WithDurationSessionParameters<TypeFromSchema<typeof TlvCaseSigma1>, "initiatorSessionParams">;
|
|
37
38
|
|
|
38
39
|
/** @see {@link MatterSpecification.v13.Core} § 4.14.2.3 */
|
|
39
40
|
export const TlvCaseSigma2 = TlvObject({
|
|
@@ -43,6 +44,7 @@ export const TlvCaseSigma2 = TlvObject({
|
|
|
43
44
|
encrypted: TlvField(4, TlvByteString),
|
|
44
45
|
responderSessionParams: TlvOptionalField(5, TlvSessionParameters),
|
|
45
46
|
});
|
|
47
|
+
export type CaseSigma2 = WithDurationSessionParameters<TypeFromSchema<typeof TlvCaseSigma2>, "responderSessionParams">;
|
|
46
48
|
|
|
47
49
|
/** @see {@link MatterSpecification.v13.Core} § 4.14.2.3 */
|
|
48
50
|
export const TlvCaseSigma2Resume = TlvObject({
|
|
@@ -51,11 +53,16 @@ export const TlvCaseSigma2Resume = TlvObject({
|
|
|
51
53
|
responderSessionId: TlvField(3, TlvUInt16),
|
|
52
54
|
responderSessionParams: TlvOptionalField(4, TlvSessionParameters),
|
|
53
55
|
});
|
|
56
|
+
export type CaseSigma2Resume = WithDurationSessionParameters<
|
|
57
|
+
TypeFromSchema<typeof TlvCaseSigma2Resume>,
|
|
58
|
+
"responderSessionParams"
|
|
59
|
+
>;
|
|
54
60
|
|
|
55
61
|
/** @see {@link MatterSpecification.v13.Core} § 4.14.2.3 */
|
|
56
62
|
export const TlvCaseSigma3 = TlvObject({
|
|
57
63
|
encrypted: TlvField(1, TlvByteString),
|
|
58
64
|
});
|
|
65
|
+
export type CaseSigma3 = TypeFromSchema<typeof TlvCaseSigma3>;
|
|
59
66
|
|
|
60
67
|
/** @see {@link MatterSpecification.v10.Core} § 4.13.2.3 */
|
|
61
68
|
export const TlvSignedData = TlvObject({
|
|
@@ -64,6 +71,7 @@ export const TlvSignedData = TlvObject({
|
|
|
64
71
|
responderPublicKey: TlvField(3, TlvByteString.bound({ length: CRYPTO_PUBLIC_KEY_SIZE_BYTES })),
|
|
65
72
|
initiatorPublicKey: TlvField(4, TlvByteString.bound({ length: CRYPTO_PUBLIC_KEY_SIZE_BYTES })),
|
|
66
73
|
});
|
|
74
|
+
export type SignedData = TypeFromSchema<typeof TlvSignedData>;
|
|
67
75
|
|
|
68
76
|
/** @see {@link MatterSpecification.v10.Core} § 4.13.2.3 */
|
|
69
77
|
export const TlvEncryptedDataSigma2 = TlvObject({
|
|
@@ -72,6 +80,7 @@ export const TlvEncryptedDataSigma2 = TlvObject({
|
|
|
72
80
|
signature: TlvField(3, TlvByteString.bound({ length: CASE_SIGNATURE_LENGTH })),
|
|
73
81
|
resumptionId: TlvField(4, TlvByteString.bound({ length: 16 })),
|
|
74
82
|
});
|
|
83
|
+
export type EncryptedDataSigma2 = TypeFromSchema<typeof TlvEncryptedDataSigma2>;
|
|
75
84
|
|
|
76
85
|
/** @see {@link MatterSpecification.v10.Core} § 4.13.2.3 */
|
|
77
86
|
export const TlvEncryptedDataSigma3 = TlvObject({
|
|
@@ -79,3 +88,4 @@ export const TlvEncryptedDataSigma3 = TlvObject({
|
|
|
79
88
|
responderIcac: TlvOptionalField(2, TlvByteString),
|
|
80
89
|
signature: TlvField(3, TlvByteString.bound({ length: CASE_SIGNATURE_LENGTH })),
|
|
81
90
|
});
|
|
91
|
+
export type EncryptedDataSigma3 = TypeFromSchema<typeof TlvEncryptedDataSigma3>;
|
|
@@ -7,12 +7,20 @@
|
|
|
7
7
|
import { MatterFlowError } from "#general";
|
|
8
8
|
import { SecureMessageType, TypeFromSchema } from "#types";
|
|
9
9
|
import { SecureChannelMessenger } from "../../securechannel/SecureChannelMessenger.js";
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
CaseSigma1,
|
|
12
|
+
CaseSigma2,
|
|
13
|
+
CaseSigma2Resume,
|
|
14
|
+
TlvCaseSigma1,
|
|
15
|
+
TlvCaseSigma2,
|
|
16
|
+
TlvCaseSigma2Resume,
|
|
17
|
+
TlvCaseSigma3,
|
|
18
|
+
} from "./CaseMessages.js";
|
|
11
19
|
|
|
12
20
|
export class CaseServerMessenger extends SecureChannelMessenger {
|
|
13
21
|
async readSigma1() {
|
|
14
22
|
const { payload } = await this.nextMessage(SecureMessageType.Sigma1);
|
|
15
|
-
return { sigma1Bytes: payload, sigma1: TlvCaseSigma1.decode(payload) };
|
|
23
|
+
return { sigma1Bytes: payload, sigma1: TlvCaseSigma1.decode(payload) as CaseSigma1 };
|
|
16
24
|
}
|
|
17
25
|
|
|
18
26
|
sendSigma2(sigma2: TypeFromSchema<typeof TlvCaseSigma2>) {
|
|
@@ -41,9 +49,9 @@ export class CaseClientMessenger extends SecureChannelMessenger {
|
|
|
41
49
|
} = await this.anyNextMessage("Sigma2(Resume)");
|
|
42
50
|
switch (messageType) {
|
|
43
51
|
case SecureMessageType.Sigma2:
|
|
44
|
-
return { sigma2Bytes: payload, sigma2: TlvCaseSigma2.decode(payload) };
|
|
52
|
+
return { sigma2Bytes: payload, sigma2: TlvCaseSigma2.decode(payload) as CaseSigma2 };
|
|
45
53
|
case SecureMessageType.Sigma2Resume:
|
|
46
|
-
return { sigma2Resume: TlvCaseSigma2Resume.decode(payload) };
|
|
54
|
+
return { sigma2Resume: TlvCaseSigma2Resume.decode(payload) as CaseSigma2Resume };
|
|
47
55
|
default:
|
|
48
56
|
throw new MatterFlowError(
|
|
49
57
|
`Received unexpected message type while expecting CASE Sigma2(Resume): ${messageType}, expected: ${SecureMessageType.Sigma2} or ${SecureMessageType.Sigma2Resume}`,
|
|
@@ -6,14 +6,15 @@
|
|
|
6
6
|
|
|
7
7
|
import { Noc } from "#certificate/kinds/Noc.js";
|
|
8
8
|
import { Bytes, Crypto, CryptoDecryptError, Logger, PublicKey, UnexpectedDataError } from "#general";
|
|
9
|
-
import {
|
|
9
|
+
import { SessionParametersWithDurations } from "#session/pase/PaseMessages.js";
|
|
10
10
|
import { ResumptionRecord, SessionManager } from "#session/SessionManager.js";
|
|
11
|
-
import { NodeId, SECURE_CHANNEL_PROTOCOL_ID, SecureChannelStatusCode
|
|
11
|
+
import { NodeId, SECURE_CHANNEL_PROTOCOL_ID, SecureChannelStatusCode } from "#types";
|
|
12
12
|
import { FabricManager, FabricNotFoundError } from "../../fabric/FabricManager.js";
|
|
13
13
|
import { MessageExchange } from "../../protocol/MessageExchange.js";
|
|
14
14
|
import { ProtocolHandler } from "../../protocol/ProtocolHandler.js";
|
|
15
15
|
import { ChannelStatusResponseError } from "../../securechannel/SecureChannelMessenger.js";
|
|
16
16
|
import {
|
|
17
|
+
CaseSigma1,
|
|
17
18
|
KDFSR1_KEY_INFO,
|
|
18
19
|
KDFSR2_INFO,
|
|
19
20
|
KDFSR2_KEY_INFO,
|
|
@@ -22,7 +23,6 @@ import {
|
|
|
22
23
|
RESUME2_MIC_NONCE,
|
|
23
24
|
TBE_DATA2_NONCE,
|
|
24
25
|
TBE_DATA3_NONCE,
|
|
25
|
-
TlvCaseSigma1,
|
|
26
26
|
TlvEncryptedDataSigma2,
|
|
27
27
|
TlvEncryptedDataSigma3,
|
|
28
28
|
TlvSignedData,
|
|
@@ -313,7 +313,7 @@ class Sigma1Context {
|
|
|
313
313
|
destinationId: Bytes;
|
|
314
314
|
peerRandom: Bytes;
|
|
315
315
|
peerEcdhPublicKey: Bytes;
|
|
316
|
-
peerSessionParams?:
|
|
316
|
+
peerSessionParams?: SessionParametersWithDurations;
|
|
317
317
|
resumptionRecord?: ResumptionRecord;
|
|
318
318
|
|
|
319
319
|
#localResumptionId?: Bytes;
|
|
@@ -322,7 +322,7 @@ class Sigma1Context {
|
|
|
322
322
|
crypto: Crypto,
|
|
323
323
|
messenger: CaseServerMessenger,
|
|
324
324
|
bytes: Bytes,
|
|
325
|
-
sigma1:
|
|
325
|
+
sigma1: CaseSigma1,
|
|
326
326
|
resumptionRecord?: ResumptionRecord,
|
|
327
327
|
) {
|
|
328
328
|
this.crypto = crypto;
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import { SupportedTransportsBitmap } from "#common/SupportedTransportsBitmap.js";
|
|
8
8
|
import { CRYPTO_HASH_LEN_BYTES, CRYPTO_PUBLIC_KEY_SIZE_BYTES } from "#general";
|
|
9
|
+
import { SessionIntervals } from "#session/SessionIntervals.js";
|
|
9
10
|
import {
|
|
10
11
|
TlvBitmap,
|
|
11
12
|
TlvBoolean,
|
|
@@ -15,18 +16,19 @@ import {
|
|
|
15
16
|
TlvOptionalField,
|
|
16
17
|
TlvUInt16,
|
|
17
18
|
TlvUInt32,
|
|
19
|
+
TypeFromSchema,
|
|
18
20
|
} from "#types";
|
|
19
21
|
|
|
20
22
|
/** @see {@link MatterSpecification.v13.Core} § 4.12.8 */
|
|
21
23
|
export const TlvSessionParameters = TlvObject({
|
|
22
24
|
/** Maximum sleep interval of node when in idle mode. */
|
|
23
|
-
|
|
25
|
+
idleInterval: TlvOptionalField(1, TlvUInt32) /* default: SESSION_IDLE_INTERVAL */,
|
|
24
26
|
|
|
25
27
|
/** Maximum sleep interval of node when in active mode. */
|
|
26
|
-
|
|
28
|
+
activeInterval: TlvOptionalField(2, TlvUInt32) /* default: SESSION_ACTIVE_INTERVAL */,
|
|
27
29
|
|
|
28
30
|
/** Minimum amount of time the node SHOULD stay active after network activity. */
|
|
29
|
-
|
|
31
|
+
activeThreshold: TlvOptionalField(3, TlvUInt16) /* default: SESSION_ACTIVE_THRESHOLD */,
|
|
30
32
|
|
|
31
33
|
/** Data model revision. */
|
|
32
34
|
dataModelRevision: TlvOptionalField(4, TlvUInt16) /* default: 16 OR 17, we choose 17 aka Matter 1.2 */,
|
|
@@ -47,6 +49,17 @@ export const TlvSessionParameters = TlvObject({
|
|
|
47
49
|
maxTcpMessageSize: TlvOptionalField(9, TlvUInt32) /* default: 64000 */,
|
|
48
50
|
});
|
|
49
51
|
|
|
52
|
+
// Replace the interval fields with Duration-typed fields in the exported type
|
|
53
|
+
export type SessionParametersWithDurations = Omit<
|
|
54
|
+
TypeFromSchema<typeof TlvSessionParameters>,
|
|
55
|
+
"activeThreshold" | "activeInterval" | "idleInterval"
|
|
56
|
+
> &
|
|
57
|
+
Partial<SessionIntervals>;
|
|
58
|
+
|
|
59
|
+
export type WithDurationSessionParameters<T, K extends keyof T> = Omit<T, K> & {
|
|
60
|
+
[P in K]?: SessionParametersWithDurations;
|
|
61
|
+
};
|
|
62
|
+
|
|
50
63
|
/** @see {@link MatterSpecification.v13.Core} § 4.14.1.2 */
|
|
51
64
|
export const TlvPbkdfParamRequest = TlvObject({
|
|
52
65
|
initiatorRandom: TlvField(1, TlvByteString.bound({ length: 32 })),
|
|
@@ -55,6 +68,10 @@ export const TlvPbkdfParamRequest = TlvObject({
|
|
|
55
68
|
hasPbkdfParameters: TlvField(4, TlvBoolean),
|
|
56
69
|
initiatorSessionParams: TlvOptionalField(5, TlvSessionParameters),
|
|
57
70
|
});
|
|
71
|
+
export type PbkdfParamRequest = WithDurationSessionParameters<
|
|
72
|
+
TypeFromSchema<typeof TlvPbkdfParamRequest>,
|
|
73
|
+
"initiatorSessionParams"
|
|
74
|
+
>;
|
|
58
75
|
|
|
59
76
|
/** @see {@link MatterSpecification.v13.Core} § 4.14.1.2 */
|
|
60
77
|
export const TlvPbkdfParamResponse = TlvObject({
|
|
@@ -70,19 +87,26 @@ export const TlvPbkdfParamResponse = TlvObject({
|
|
|
70
87
|
),
|
|
71
88
|
responderSessionParams: TlvOptionalField(5, TlvSessionParameters),
|
|
72
89
|
});
|
|
90
|
+
export type PbkdfParamResponse = WithDurationSessionParameters<
|
|
91
|
+
TypeFromSchema<typeof TlvPbkdfParamResponse>,
|
|
92
|
+
"responderSessionParams"
|
|
93
|
+
>;
|
|
73
94
|
|
|
74
95
|
/** @see {@link MatterSpecification.v13.Core} § 4.14.1.2 */
|
|
75
96
|
export const TlvPasePake1 = TlvObject({
|
|
76
97
|
x: TlvField(1, TlvByteString.bound({ length: CRYPTO_PUBLIC_KEY_SIZE_BYTES })), // pA
|
|
77
98
|
});
|
|
99
|
+
export type PasePake1 = TypeFromSchema<typeof TlvPasePake1>;
|
|
78
100
|
|
|
79
101
|
/** @see {@link MatterSpecification.v13.Core} § 4.14.1.2 */
|
|
80
102
|
export const TlvPasePake2 = TlvObject({
|
|
81
103
|
y: TlvField(1, TlvByteString.bound({ length: CRYPTO_PUBLIC_KEY_SIZE_BYTES })), // pB
|
|
82
104
|
verifier: TlvField(2, TlvByteString.bound({ length: CRYPTO_HASH_LEN_BYTES })), // cB
|
|
83
105
|
});
|
|
106
|
+
export type PasePake2 = TypeFromSchema<typeof TlvPasePake2>;
|
|
84
107
|
|
|
85
108
|
/** @see {@link MatterSpecification.v13.Core} § 4.14.1.2 */
|
|
86
109
|
export const TlvPasePake3 = TlvObject({
|
|
87
110
|
verifier: TlvField(1, TlvByteString.bound({ length: CRYPTO_HASH_LEN_BYTES })), // cA
|
|
88
111
|
});
|
|
112
|
+
export type PasePake3 = TypeFromSchema<typeof TlvPasePake3>;
|
|
@@ -5,9 +5,14 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { Bytes } from "#general";
|
|
8
|
-
import { SecureMessageType
|
|
8
|
+
import { SecureMessageType } from "#types";
|
|
9
9
|
import { DEFAULT_NORMAL_PROCESSING_TIME, SecureChannelMessenger } from "../../securechannel/SecureChannelMessenger.js";
|
|
10
10
|
import {
|
|
11
|
+
PasePake1,
|
|
12
|
+
PasePake2,
|
|
13
|
+
PasePake3,
|
|
14
|
+
PbkdfParamRequest,
|
|
15
|
+
PbkdfParamResponse,
|
|
11
16
|
TlvPasePake1,
|
|
12
17
|
TlvPasePake2,
|
|
13
18
|
TlvPasePake3,
|
|
@@ -18,16 +23,10 @@ import {
|
|
|
18
23
|
export const DEFAULT_PASSCODE_ID = 0;
|
|
19
24
|
export const SPAKE_CONTEXT = Bytes.fromString("CHIP PAKE V1 Commissioning");
|
|
20
25
|
|
|
21
|
-
type PbkdfParamRequest = TypeFromSchema<typeof TlvPbkdfParamRequest>;
|
|
22
|
-
type PbkdfParamResponse = TypeFromSchema<typeof TlvPbkdfParamResponse>;
|
|
23
|
-
type PasePake1 = TypeFromSchema<typeof TlvPasePake1>;
|
|
24
|
-
type PasePake2 = TypeFromSchema<typeof TlvPasePake2>;
|
|
25
|
-
type PasePake3 = TypeFromSchema<typeof TlvPasePake3>;
|
|
26
|
-
|
|
27
26
|
export class PaseServerMessenger extends SecureChannelMessenger {
|
|
28
27
|
async readPbkdfParamRequest() {
|
|
29
28
|
const { payload } = await this.nextMessage(SecureMessageType.PbkdfParamRequest, DEFAULT_NORMAL_PROCESSING_TIME);
|
|
30
|
-
return { requestPayload: payload, request: TlvPbkdfParamRequest.decode(payload) };
|
|
29
|
+
return { requestPayload: payload, request: TlvPbkdfParamRequest.decode(payload) as PbkdfParamRequest };
|
|
31
30
|
}
|
|
32
31
|
|
|
33
32
|
async sendPbkdfParamResponse(response: PbkdfParamResponse) {
|
|
@@ -61,7 +60,7 @@ export class PaseClientMessenger extends SecureChannelMessenger {
|
|
|
61
60
|
SecureMessageType.PbkdfParamResponse,
|
|
62
61
|
DEFAULT_NORMAL_PROCESSING_TIME,
|
|
63
62
|
);
|
|
64
|
-
return { responsePayload: payload, response: TlvPbkdfParamResponse.decode(payload) };
|
|
63
|
+
return { responsePayload: payload, response: TlvPbkdfParamResponse.decode(payload) as PbkdfParamResponse };
|
|
65
64
|
}
|
|
66
65
|
|
|
67
66
|
sendPasePake1(pasePake1: PasePake1) {
|