@matter/protocol 0.14.1-alpha.0-20250605-9fc134af0 → 0.14.1-alpha.0-20250606-a9bcd03f9
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/server/AccessControl.d.ts +5 -7
- package/dist/cjs/action/server/AccessControl.d.ts.map +1 -1
- package/dist/cjs/action/server/AccessControl.js.map +1 -1
- package/dist/cjs/action/server/AttributeWriteResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/AttributeWriteResponse.js +23 -0
- package/dist/cjs/action/server/AttributeWriteResponse.js.map +1 -1
- package/dist/cjs/action/server/CommandInvokeResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/CommandInvokeResponse.js +24 -1
- package/dist/cjs/action/server/CommandInvokeResponse.js.map +1 -1
- package/dist/cjs/action/server/DataResponse.d.ts +1 -1
- package/dist/cjs/action/server/DataResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/Subject.d.ts +25 -0
- package/dist/cjs/action/server/Subject.d.ts.map +1 -0
- package/dist/cjs/action/server/Subject.js +54 -0
- package/dist/cjs/action/server/Subject.js.map +6 -0
- package/dist/cjs/action/server/index.d.ts +1 -0
- package/dist/cjs/action/server/index.d.ts.map +1 -1
- package/dist/cjs/action/server/index.js +1 -0
- package/dist/cjs/action/server/index.js.map +1 -1
- package/dist/cjs/certificate/DeviceCertification.d.ts +2 -2
- package/dist/cjs/certificate/DeviceCertification.d.ts.map +1 -1
- package/dist/cjs/certificate/DeviceCertification.js.map +1 -1
- package/dist/cjs/cluster/client/AttributeClient.d.ts +3 -3
- package/dist/cjs/cluster/client/AttributeClient.d.ts.map +1 -1
- package/dist/cjs/cluster/client/AttributeClient.js +14 -2
- package/dist/cjs/cluster/client/AttributeClient.js.map +1 -1
- package/dist/cjs/cluster/client/ClusterClient.d.ts +3 -2
- package/dist/cjs/cluster/client/ClusterClient.d.ts.map +1 -1
- package/dist/cjs/cluster/client/ClusterClient.js +60 -1
- package/dist/cjs/cluster/client/ClusterClient.js.map +1 -1
- package/dist/cjs/cluster/client/ClusterClientTypes.d.ts +33 -8
- package/dist/cjs/cluster/client/ClusterClientTypes.d.ts.map +1 -1
- package/dist/cjs/cluster/client/EventClient.d.ts +3 -3
- package/dist/cjs/cluster/client/EventClient.d.ts.map +1 -1
- package/dist/cjs/cluster/client/EventClient.js +7 -0
- package/dist/cjs/cluster/client/EventClient.js.map +1 -1
- package/dist/cjs/codec/MessageCodec.d.ts.map +1 -1
- package/dist/cjs/codec/MessageCodec.js +31 -6
- package/dist/cjs/codec/MessageCodec.js.map +1 -1
- package/dist/cjs/fabric/Fabric.d.ts +20 -30
- package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
- package/dist/cjs/fabric/Fabric.js +38 -62
- package/dist/cjs/fabric/Fabric.js.map +2 -2
- package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
- package/dist/cjs/fabric/FabricManager.js +10 -4
- package/dist/cjs/fabric/FabricManager.js.map +1 -1
- package/dist/cjs/groups/FabricGroupsManager.d.ts +46 -0
- package/dist/cjs/groups/FabricGroupsManager.d.ts.map +1 -0
- package/dist/cjs/groups/FabricGroupsManager.js +155 -0
- package/dist/cjs/groups/FabricGroupsManager.js.map +6 -0
- package/dist/cjs/groups/Groups.d.ts +34 -0
- package/dist/cjs/groups/Groups.d.ts.map +1 -0
- package/dist/cjs/groups/Groups.js +89 -0
- package/dist/cjs/groups/Groups.js.map +6 -0
- package/dist/cjs/groups/KeySets.d.ts +64 -0
- package/dist/cjs/groups/KeySets.d.ts.map +1 -0
- package/dist/cjs/groups/KeySets.js +179 -0
- package/dist/cjs/groups/KeySets.js.map +6 -0
- package/dist/cjs/groups/MessagingState.d.ts +24 -0
- package/dist/cjs/groups/MessagingState.d.ts.map +1 -0
- package/dist/cjs/groups/MessagingState.js +91 -0
- package/dist/cjs/groups/MessagingState.js.map +6 -0
- package/dist/cjs/groups/index.d.ts +8 -0
- package/dist/cjs/groups/index.d.ts.map +1 -0
- package/dist/cjs/groups/index.js +25 -0
- package/dist/cjs/groups/index.js.map +6 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interaction/AccessControlManager.d.ts +4 -13
- package/dist/cjs/interaction/AccessControlManager.d.ts.map +1 -1
- package/dist/cjs/interaction/AccessControlManager.js +38 -47
- package/dist/cjs/interaction/AccessControlManager.js.map +1 -1
- package/dist/cjs/interaction/InteractionClient.d.ts +5 -4
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.js +53 -3
- package/dist/cjs/interaction/InteractionClient.js.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.js +15 -0
- package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
- package/dist/cjs/interaction/Subscription.d.ts +3 -3
- package/dist/cjs/interaction/Subscription.d.ts.map +1 -1
- package/dist/cjs/interaction/Subscription.js.map +1 -1
- package/dist/cjs/peer/PeerAddress.d.ts +1 -0
- package/dist/cjs/peer/PeerAddress.d.ts.map +1 -1
- package/dist/cjs/peer/PeerAddress.js +5 -0
- package/dist/cjs/peer/PeerAddress.js.map +1 -1
- package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
- package/dist/cjs/peer/PeerSet.js +31 -2
- package/dist/cjs/peer/PeerSet.js.map +1 -1
- package/dist/cjs/protocol/ChannelManager.d.ts.map +1 -1
- package/dist/cjs/protocol/ChannelManager.js +7 -8
- package/dist/cjs/protocol/ChannelManager.js.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.js +39 -25
- package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
- package/dist/cjs/protocol/MessageExchange.d.ts +1 -1
- package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageExchange.js +32 -4
- package/dist/cjs/protocol/MessageExchange.js.map +1 -1
- package/dist/cjs/protocol/MessageReceptionState.d.ts +1 -1
- package/dist/cjs/securechannel/SecureChannelProtocol.js +1 -1
- package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/cjs/session/GroupSession.d.ts +56 -0
- package/dist/cjs/session/GroupSession.d.ts.map +1 -0
- package/dist/cjs/session/GroupSession.js +188 -0
- package/dist/cjs/session/GroupSession.js.map +6 -0
- package/dist/cjs/session/InsecureSession.d.ts +2 -1
- package/dist/cjs/session/InsecureSession.d.ts.map +1 -1
- package/dist/cjs/session/InsecureSession.js +3 -2
- package/dist/cjs/session/InsecureSession.js.map +1 -1
- package/dist/cjs/session/NodeSession.d.ts +88 -0
- package/dist/cjs/session/NodeSession.d.ts.map +1 -0
- package/dist/cjs/session/NodeSession.js +318 -0
- package/dist/cjs/session/NodeSession.js.map +6 -0
- package/dist/cjs/session/SecureSession.d.ts +10 -75
- package/dist/cjs/session/SecureSession.d.ts.map +1 -1
- package/dist/cjs/session/SecureSession.js +9 -280
- package/dist/cjs/session/SecureSession.js.map +2 -2
- package/dist/cjs/session/Session.d.ts +6 -5
- package/dist/cjs/session/Session.d.ts.map +1 -1
- package/dist/cjs/session/Session.js +11 -1
- package/dist/cjs/session/Session.js.map +1 -1
- package/dist/cjs/session/SessionManager.d.ts +27 -9
- package/dist/cjs/session/SessionManager.d.ts.map +1 -1
- package/dist/cjs/session/SessionManager.js +83 -5
- package/dist/cjs/session/SessionManager.js.map +2 -2
- package/dist/cjs/session/case/CaseClient.d.ts +1 -1
- package/dist/cjs/session/case/CaseClient.js +2 -2
- package/dist/cjs/session/case/CaseClient.js.map +1 -1
- package/dist/cjs/session/index.d.ts +2 -0
- package/dist/cjs/session/index.d.ts.map +1 -1
- package/dist/cjs/session/index.js +2 -0
- package/dist/cjs/session/index.js.map +1 -1
- package/dist/cjs/session/pase/PaseClient.d.ts +1 -1
- package/dist/esm/action/server/AccessControl.d.ts +5 -7
- package/dist/esm/action/server/AccessControl.d.ts.map +1 -1
- package/dist/esm/action/server/AccessControl.js.map +1 -1
- package/dist/esm/action/server/AttributeWriteResponse.d.ts.map +1 -1
- package/dist/esm/action/server/AttributeWriteResponse.js +23 -0
- package/dist/esm/action/server/AttributeWriteResponse.js.map +1 -1
- package/dist/esm/action/server/CommandInvokeResponse.d.ts.map +1 -1
- package/dist/esm/action/server/CommandInvokeResponse.js +24 -1
- package/dist/esm/action/server/CommandInvokeResponse.js.map +1 -1
- package/dist/esm/action/server/DataResponse.d.ts +1 -1
- package/dist/esm/action/server/DataResponse.d.ts.map +1 -1
- package/dist/esm/action/server/Subject.d.ts +25 -0
- package/dist/esm/action/server/Subject.d.ts.map +1 -0
- package/dist/esm/action/server/Subject.js +34 -0
- package/dist/esm/action/server/Subject.js.map +6 -0
- package/dist/esm/action/server/index.d.ts +1 -0
- package/dist/esm/action/server/index.d.ts.map +1 -1
- package/dist/esm/action/server/index.js +1 -0
- package/dist/esm/action/server/index.js.map +1 -1
- package/dist/esm/certificate/DeviceCertification.d.ts +2 -2
- package/dist/esm/certificate/DeviceCertification.d.ts.map +1 -1
- package/dist/esm/certificate/DeviceCertification.js.map +1 -1
- package/dist/esm/cluster/client/AttributeClient.d.ts +3 -3
- package/dist/esm/cluster/client/AttributeClient.d.ts.map +1 -1
- package/dist/esm/cluster/client/AttributeClient.js +13 -1
- package/dist/esm/cluster/client/AttributeClient.js.map +1 -1
- package/dist/esm/cluster/client/ClusterClient.d.ts +3 -2
- package/dist/esm/cluster/client/ClusterClient.d.ts.map +1 -1
- package/dist/esm/cluster/client/ClusterClient.js +61 -2
- package/dist/esm/cluster/client/ClusterClient.js.map +1 -1
- package/dist/esm/cluster/client/ClusterClientTypes.d.ts +33 -8
- package/dist/esm/cluster/client/ClusterClientTypes.d.ts.map +1 -1
- package/dist/esm/cluster/client/EventClient.d.ts +3 -3
- package/dist/esm/cluster/client/EventClient.d.ts.map +1 -1
- package/dist/esm/cluster/client/EventClient.js +7 -0
- package/dist/esm/cluster/client/EventClient.js.map +1 -1
- package/dist/esm/codec/MessageCodec.d.ts.map +1 -1
- package/dist/esm/codec/MessageCodec.js +41 -7
- package/dist/esm/codec/MessageCodec.js.map +1 -1
- package/dist/esm/fabric/Fabric.d.ts +20 -30
- package/dist/esm/fabric/Fabric.d.ts.map +1 -1
- package/dist/esm/fabric/Fabric.js +38 -62
- package/dist/esm/fabric/Fabric.js.map +2 -2
- package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
- package/dist/esm/fabric/FabricManager.js +10 -4
- package/dist/esm/fabric/FabricManager.js.map +1 -1
- package/dist/esm/groups/FabricGroupsManager.d.ts +46 -0
- package/dist/esm/groups/FabricGroupsManager.d.ts.map +1 -0
- package/dist/esm/groups/FabricGroupsManager.js +135 -0
- package/dist/esm/groups/FabricGroupsManager.js.map +6 -0
- package/dist/esm/groups/Groups.d.ts +34 -0
- package/dist/esm/groups/Groups.d.ts.map +1 -0
- package/dist/esm/groups/Groups.js +69 -0
- package/dist/esm/groups/Groups.js.map +6 -0
- package/dist/esm/groups/KeySets.d.ts +64 -0
- package/dist/esm/groups/KeySets.d.ts.map +1 -0
- package/dist/esm/groups/KeySets.js +159 -0
- package/dist/esm/groups/KeySets.js.map +6 -0
- package/dist/esm/groups/MessagingState.d.ts +24 -0
- package/dist/esm/groups/MessagingState.d.ts.map +1 -0
- package/dist/esm/groups/MessagingState.js +71 -0
- package/dist/esm/groups/MessagingState.js.map +6 -0
- package/dist/esm/groups/index.d.ts +8 -0
- package/dist/esm/groups/index.d.ts.map +1 -0
- package/dist/esm/groups/index.js +8 -0
- package/dist/esm/groups/index.js.map +6 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interaction/AccessControlManager.d.ts +4 -13
- package/dist/esm/interaction/AccessControlManager.d.ts.map +1 -1
- package/dist/esm/interaction/AccessControlManager.js +39 -48
- package/dist/esm/interaction/AccessControlManager.js.map +1 -1
- package/dist/esm/interaction/InteractionClient.d.ts +5 -4
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.js +54 -4
- package/dist/esm/interaction/InteractionClient.js.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.js +15 -0
- package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
- package/dist/esm/interaction/Subscription.d.ts +3 -3
- package/dist/esm/interaction/Subscription.d.ts.map +1 -1
- package/dist/esm/interaction/Subscription.js.map +1 -1
- package/dist/esm/peer/PeerAddress.d.ts +1 -0
- package/dist/esm/peer/PeerAddress.d.ts.map +1 -1
- package/dist/esm/peer/PeerAddress.js +5 -0
- package/dist/esm/peer/PeerAddress.js.map +1 -1
- package/dist/esm/peer/PeerSet.d.ts.map +1 -1
- package/dist/esm/peer/PeerSet.js +33 -3
- package/dist/esm/peer/PeerSet.js.map +1 -1
- package/dist/esm/protocol/ChannelManager.d.ts.map +1 -1
- package/dist/esm/protocol/ChannelManager.js +7 -8
- package/dist/esm/protocol/ChannelManager.js.map +1 -1
- package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeManager.js +41 -27
- package/dist/esm/protocol/ExchangeManager.js.map +1 -1
- package/dist/esm/protocol/MessageExchange.d.ts +1 -1
- package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/esm/protocol/MessageExchange.js +39 -5
- package/dist/esm/protocol/MessageExchange.js.map +1 -1
- package/dist/esm/protocol/MessageReceptionState.d.ts +1 -1
- package/dist/esm/securechannel/SecureChannelProtocol.js +2 -2
- package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/esm/session/GroupSession.d.ts +56 -0
- package/dist/esm/session/GroupSession.d.ts.map +1 -0
- package/dist/esm/session/GroupSession.js +177 -0
- package/dist/esm/session/GroupSession.js.map +6 -0
- package/dist/esm/session/InsecureSession.d.ts +2 -1
- package/dist/esm/session/InsecureSession.d.ts.map +1 -1
- package/dist/esm/session/InsecureSession.js +3 -2
- package/dist/esm/session/InsecureSession.js.map +1 -1
- package/dist/esm/session/NodeSession.d.ts +88 -0
- package/dist/esm/session/NodeSession.d.ts.map +1 -0
- package/dist/esm/session/NodeSession.js +298 -0
- package/dist/esm/session/NodeSession.js.map +6 -0
- package/dist/esm/session/SecureSession.d.ts +10 -75
- package/dist/esm/session/SecureSession.d.ts.map +1 -1
- package/dist/esm/session/SecureSession.js +10 -291
- package/dist/esm/session/SecureSession.js.map +2 -2
- package/dist/esm/session/Session.d.ts +6 -5
- package/dist/esm/session/Session.d.ts.map +1 -1
- package/dist/esm/session/Session.js +12 -2
- package/dist/esm/session/Session.js.map +1 -1
- package/dist/esm/session/SessionManager.d.ts +27 -9
- package/dist/esm/session/SessionManager.d.ts.map +1 -1
- package/dist/esm/session/SessionManager.js +84 -6
- package/dist/esm/session/SessionManager.js.map +1 -1
- package/dist/esm/session/case/CaseClient.d.ts +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/index.d.ts +2 -0
- package/dist/esm/session/index.d.ts.map +1 -1
- package/dist/esm/session/index.js +2 -0
- package/dist/esm/session/index.js.map +1 -1
- package/dist/esm/session/pase/PaseClient.d.ts +1 -1
- package/package.json +6 -6
- package/src/action/server/AccessControl.ts +4 -7
- package/src/action/server/AttributeWriteResponse.ts +29 -7
- package/src/action/server/CommandInvokeResponse.ts +28 -7
- package/src/action/server/DataResponse.ts +1 -1
- package/src/action/server/Subject.ts +45 -0
- package/src/action/server/index.ts +1 -0
- package/src/certificate/DeviceCertification.ts +2 -2
- package/src/cluster/client/AttributeClient.ts +15 -3
- package/src/cluster/client/ClusterClient.ts +90 -4
- package/src/cluster/client/ClusterClientTypes.ts +38 -9
- package/src/cluster/client/EventClient.ts +9 -2
- package/src/codec/MessageCodec.ts +49 -8
- package/src/fabric/Fabric.ts +51 -85
- package/src/fabric/FabricManager.ts +11 -4
- package/src/groups/FabricGroupsManager.ts +164 -0
- package/src/groups/Groups.ts +81 -0
- package/src/groups/KeySets.ts +194 -0
- package/src/groups/MessagingState.ts +76 -0
- package/src/groups/index.ts +8 -0
- package/src/index.ts +1 -0
- package/src/interaction/AccessControlManager.ts +49 -81
- package/src/interaction/InteractionClient.ts +66 -6
- package/src/interaction/InteractionMessenger.ts +15 -0
- package/src/interaction/Subscription.ts +3 -3
- package/src/peer/PeerAddress.ts +4 -0
- package/src/peer/PeerSet.ts +39 -4
- package/src/protocol/ChannelManager.ts +7 -9
- package/src/protocol/ExchangeManager.ts +51 -35
- package/src/protocol/MessageExchange.ts +42 -7
- package/src/protocol/MessageReceptionState.ts +2 -2
- package/src/securechannel/SecureChannelProtocol.ts +2 -2
- package/src/session/GroupSession.ts +223 -0
- package/src/session/InsecureSession.ts +3 -2
- package/src/session/NodeSession.ts +367 -0
- package/src/session/SecureSession.ts +14 -363
- package/src/session/Session.ts +17 -6
- package/src/session/SessionManager.ts +94 -14
- package/src/session/case/CaseClient.ts +2 -2
- package/src/session/index.ts +2 -3
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { GroupKeyManagement } from "#clusters/group-key-management";
|
|
7
|
+
import { BasicSet } from "#general";
|
|
8
|
+
export declare const GROUP_KEY_INFO: Uint8Array<ArrayBufferLike>;
|
|
9
|
+
export declare class KeySets<T extends OperationalKeySet> extends BasicSet<T> {
|
|
10
|
+
#private;
|
|
11
|
+
get sessions(): Map<number, {
|
|
12
|
+
keySetId: number;
|
|
13
|
+
key: Uint8Array;
|
|
14
|
+
}[]>;
|
|
15
|
+
add(item: T): void;
|
|
16
|
+
delete<F extends keyof T>(itemOrField: T | F, value?: T[F]): boolean;
|
|
17
|
+
forId(groupKeySetId: number): OperationalKeySet | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Return an operative list of operational keys, start time and their session IDs for a specified
|
|
20
|
+
* group key set id. This is mainly used for receiving messages.
|
|
21
|
+
*/
|
|
22
|
+
allKeysForId(keySetId: number): {
|
|
23
|
+
key: Uint8Array;
|
|
24
|
+
sessionId?: number;
|
|
25
|
+
startTime: number | bigint;
|
|
26
|
+
}[];
|
|
27
|
+
/**
|
|
28
|
+
* Returns the current operational group key for a given group KeySet Id and returns the keys, start time and
|
|
29
|
+
* their session IDs. This is mainly used for sending messages.
|
|
30
|
+
*/
|
|
31
|
+
currentKeyForId(keySetId: number): {
|
|
32
|
+
key: Uint8Array;
|
|
33
|
+
sessionId?: number;
|
|
34
|
+
startTime: number | bigint;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Returns the group key set for a given group key set id in the official data format from the Group key Management
|
|
38
|
+
* cluster.
|
|
39
|
+
*/
|
|
40
|
+
asGroupKeySet(groupKeySetId: number): {
|
|
41
|
+
groupKeySetId: number;
|
|
42
|
+
epochKey0: Uint8Array<ArrayBufferLike> | null;
|
|
43
|
+
epochStartTime0: number | bigint | null;
|
|
44
|
+
epochKey1: Uint8Array<ArrayBufferLike> | null;
|
|
45
|
+
epochStartTime1: number | bigint | null;
|
|
46
|
+
epochKey2: Uint8Array<ArrayBufferLike> | null;
|
|
47
|
+
epochStartTime2: number | bigint | null;
|
|
48
|
+
groupKeySecurityPolicy: GroupKeyManagement.GroupKeySecurityPolicy;
|
|
49
|
+
groupKeyMulticastPolicy: GroupKeyManagement.GroupKeyMulticastPolicy | undefined;
|
|
50
|
+
} | undefined;
|
|
51
|
+
/** Calculates a group session id based on the operational group key. */
|
|
52
|
+
sessionIdFromKey(operationalGroupKey: Uint8Array): Promise<number>;
|
|
53
|
+
}
|
|
54
|
+
export type GroupKeySet = GroupKeyManagement.GroupKeySet;
|
|
55
|
+
/** Enhanced structure of GroupKeySet to include operational data for easier operational processing. */
|
|
56
|
+
export type OperationalKeySet = GroupKeySet & {
|
|
57
|
+
operationalEpochKey0: Uint8Array;
|
|
58
|
+
groupSessionId0: number | null;
|
|
59
|
+
operationalEpochKey1: Uint8Array | null;
|
|
60
|
+
groupSessionId1: number | null;
|
|
61
|
+
operationalEpochKey2: Uint8Array | null;
|
|
62
|
+
groupSessionId2: number | null;
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=KeySets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeySets.d.ts","sourceRoot":"","sources":["../../../src/groups/KeySets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAyE,MAAM,UAAU,CAAC;AAE3G,eAAO,MAAM,cAAc,6BAAmC,CAAC;AAE/D,qBAAa,OAAO,CAAC,CAAC,SAAS,iBAAiB,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;;IAIjE,IAAI,QAAQ;kBAFqC,MAAM;aAAO,UAAU;SAIvE;IAEQ,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAMlB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO;IAQ7E,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI3D;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM;aAKY,UAAU;oBAAc,MAAM;mBAAa,MAAM,GAAG,MAAM;;IA8BnG;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM;aAlCS,UAAU;oBAAc,MAAM;mBAAa,MAAM,GAAG,MAAM;;IA+DnG;;;OAGG;IACH,aAAa,CAAC,aAAa,EAAE,MAAM;;;;;;;;;;;IA6BnC,wEAAwE;IAClE,gBAAgB,CAAC,mBAAmB,EAAE,UAAU;CAsCzD;AAED,MAAM,MAAM,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC;AAEzD,uGAAuG;AACvG,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC1C,oBAAoB,EAAE,UAAU,CAAC;IACjC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oBAAoB,EAAE,UAAU,GAAG,IAAI,CAAC;IACxC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oBAAoB,EAAE,UAAU,GAAG,IAAI,CAAC;IACxC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC"}
|
|
@@ -0,0 +1,179 @@
|
|
|
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 KeySets_exports = {};
|
|
20
|
+
__export(KeySets_exports, {
|
|
21
|
+
GROUP_KEY_INFO: () => GROUP_KEY_INFO,
|
|
22
|
+
KeySets: () => KeySets
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(KeySets_exports);
|
|
25
|
+
var import_general = require("#general");
|
|
26
|
+
/**
|
|
27
|
+
* @license
|
|
28
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
29
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
30
|
+
*/
|
|
31
|
+
const GROUP_KEY_INFO = import_general.Bytes.fromString("GroupKeyHash");
|
|
32
|
+
class KeySets extends import_general.BasicSet {
|
|
33
|
+
/** Operational enhanced structure for fast access based on the group session id. */
|
|
34
|
+
#sessions = /* @__PURE__ */ new Map();
|
|
35
|
+
get sessions() {
|
|
36
|
+
return this.#sessions;
|
|
37
|
+
}
|
|
38
|
+
add(item) {
|
|
39
|
+
this.delete("groupKeySetId", item.groupKeySetId);
|
|
40
|
+
super.add(item);
|
|
41
|
+
this.#updateSessions();
|
|
42
|
+
}
|
|
43
|
+
delete(itemOrField, value) {
|
|
44
|
+
const deleted = super.delete(itemOrField, value);
|
|
45
|
+
if (deleted) {
|
|
46
|
+
this.#updateSessions();
|
|
47
|
+
}
|
|
48
|
+
return deleted;
|
|
49
|
+
}
|
|
50
|
+
forId(groupKeySetId) {
|
|
51
|
+
return this.get("groupKeySetId", groupKeySetId);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Return an operative list of operational keys, start time and their session IDs for a specified
|
|
55
|
+
* group key set id. This is mainly used for receiving messages.
|
|
56
|
+
*/
|
|
57
|
+
allKeysForId(keySetId) {
|
|
58
|
+
const groupKeySet = this.forId(keySetId);
|
|
59
|
+
if (groupKeySet === void 0) {
|
|
60
|
+
throw new import_general.MatterFlowError(`GroupKeySet for groupKeySet ${keySetId} not found.`);
|
|
61
|
+
}
|
|
62
|
+
const operationalKeys = Array();
|
|
63
|
+
const {
|
|
64
|
+
operationalEpochKey0,
|
|
65
|
+
groupSessionId0,
|
|
66
|
+
epochStartTime0,
|
|
67
|
+
operationalEpochKey1,
|
|
68
|
+
groupSessionId1,
|
|
69
|
+
epochStartTime1,
|
|
70
|
+
operationalEpochKey2,
|
|
71
|
+
groupSessionId2,
|
|
72
|
+
epochStartTime2
|
|
73
|
+
} = groupKeySet;
|
|
74
|
+
if (operationalEpochKey0 === null || epochStartTime0 === null || keySetId !== 0 && groupSessionId0 === null) {
|
|
75
|
+
throw new import_general.MatterFlowError(`EpochKey0 for groupKeySet ${keySetId} not found.`);
|
|
76
|
+
}
|
|
77
|
+
operationalKeys.push({
|
|
78
|
+
key: operationalEpochKey0,
|
|
79
|
+
sessionId: groupSessionId0 !== null ? groupSessionId0 : void 0,
|
|
80
|
+
startTime: epochStartTime0
|
|
81
|
+
});
|
|
82
|
+
if (operationalEpochKey1 !== null && groupSessionId1 !== null && epochStartTime1 !== null) {
|
|
83
|
+
operationalKeys.push({ key: operationalEpochKey1, sessionId: groupSessionId1, startTime: epochStartTime1 });
|
|
84
|
+
}
|
|
85
|
+
if (operationalEpochKey2 !== null && groupSessionId2 !== null && epochStartTime2 !== null) {
|
|
86
|
+
operationalKeys.push({ key: operationalEpochKey2, sessionId: groupSessionId2, startTime: epochStartTime2 });
|
|
87
|
+
}
|
|
88
|
+
return operationalKeys;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Returns the current operational group key for a given group KeySet Id and returns the keys, start time and
|
|
92
|
+
* their session IDs. This is mainly used for sending messages.
|
|
93
|
+
*/
|
|
94
|
+
currentKeyForId(keySetId) {
|
|
95
|
+
const operationalKeys = this.allKeysForId(keySetId);
|
|
96
|
+
if (operationalKeys.length === 0) {
|
|
97
|
+
throw new import_general.MatterFlowError(`No operational keys found for groupKeySet ${keySetId}.`);
|
|
98
|
+
}
|
|
99
|
+
if (keySetId === 0) {
|
|
100
|
+
if (operationalKeys.length > 2) {
|
|
101
|
+
return operationalKeys[1];
|
|
102
|
+
}
|
|
103
|
+
return operationalKeys[0];
|
|
104
|
+
} else {
|
|
105
|
+
const now = import_general.Time.nowUs();
|
|
106
|
+
const relevantKeys = operationalKeys.filter(({ startTime }) => startTime <= now);
|
|
107
|
+
if (relevantKeys.length === 0) {
|
|
108
|
+
throw new import_general.ImplementationError(
|
|
109
|
+
`No operational keys found for groupKeySet ${keySetId} that are not in the future.`
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
return relevantKeys[operationalKeys.length - 1];
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Returns the group key set for a given group key set id in the official data format from the Group key Management
|
|
117
|
+
* cluster.
|
|
118
|
+
*/
|
|
119
|
+
asGroupKeySet(groupKeySetId) {
|
|
120
|
+
const groupKeySet = this.forId(groupKeySetId);
|
|
121
|
+
if (groupKeySet === void 0) {
|
|
122
|
+
return void 0;
|
|
123
|
+
}
|
|
124
|
+
const {
|
|
125
|
+
epochKey0,
|
|
126
|
+
epochStartTime0,
|
|
127
|
+
epochKey1,
|
|
128
|
+
epochStartTime1,
|
|
129
|
+
epochKey2,
|
|
130
|
+
epochStartTime2,
|
|
131
|
+
groupKeySecurityPolicy,
|
|
132
|
+
groupKeyMulticastPolicy
|
|
133
|
+
} = groupKeySet;
|
|
134
|
+
return {
|
|
135
|
+
groupKeySetId,
|
|
136
|
+
epochKey0,
|
|
137
|
+
epochStartTime0,
|
|
138
|
+
epochKey1,
|
|
139
|
+
epochStartTime1,
|
|
140
|
+
epochKey2,
|
|
141
|
+
epochStartTime2,
|
|
142
|
+
groupKeySecurityPolicy,
|
|
143
|
+
groupKeyMulticastPolicy
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/** Calculates a group session id based on the operational group key. */
|
|
147
|
+
async sessionIdFromKey(operationalGroupKey) {
|
|
148
|
+
const groupKeyHash = await import_general.Crypto.hkdf(operationalGroupKey, new Uint8Array(), GROUP_KEY_INFO, 2);
|
|
149
|
+
return new import_general.DataReader(groupKeyHash).readUInt16();
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Updates the group session map based on the current group key sets.
|
|
153
|
+
* This is used to quickly find the operational keys by their group session id.
|
|
154
|
+
*/
|
|
155
|
+
#updateSessions() {
|
|
156
|
+
this.#sessions.clear();
|
|
157
|
+
for (const [id, keySet] of this.mapOf("groupKeySetId").entries()) {
|
|
158
|
+
if (id === 0) {
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
if (keySet.groupSessionId0 !== null) {
|
|
162
|
+
const list = this.#sessions.get(keySet.groupSessionId0) ?? [];
|
|
163
|
+
list.push({ key: keySet.operationalEpochKey0, keySetId: id });
|
|
164
|
+
this.#sessions.set(keySet.groupSessionId0, list);
|
|
165
|
+
}
|
|
166
|
+
if (keySet.groupSessionId1 !== null && keySet.operationalEpochKey1 !== null) {
|
|
167
|
+
const list = this.#sessions.get(keySet.groupSessionId1) ?? [];
|
|
168
|
+
list.push({ key: keySet.operationalEpochKey1, keySetId: id });
|
|
169
|
+
this.#sessions.set(keySet.groupSessionId1, list);
|
|
170
|
+
}
|
|
171
|
+
if (keySet.groupSessionId2 !== null && keySet.operationalEpochKey2 !== null) {
|
|
172
|
+
const list = this.#sessions.get(keySet.groupSessionId2) ?? [];
|
|
173
|
+
list.push({ key: keySet.operationalEpochKey2, keySetId: id });
|
|
174
|
+
this.#sessions.set(keySet.groupSessionId2, list);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=KeySets.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/groups/KeySets.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { StorageContext } from "#general";
|
|
7
|
+
import { PersistedMessageCounter } from "#protocol/MessageCounter.js";
|
|
8
|
+
import { MessageReceptionStateEncryptedWithRollover } from "#protocol/MessageReceptionState.js";
|
|
9
|
+
import { NodeId } from "#types";
|
|
10
|
+
export declare class MessagingState {
|
|
11
|
+
#private;
|
|
12
|
+
constructor(storage?: StorageContext);
|
|
13
|
+
set storage(storage: StorageContext);
|
|
14
|
+
/**
|
|
15
|
+
* Return the message counter for sending messages to a group with the given operational key.
|
|
16
|
+
*/
|
|
17
|
+
counterFor(operationalKey: Uint8Array): PersistedMessageCounter;
|
|
18
|
+
removeCounter(key: Uint8Array, forDelete?: boolean): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Returns the message reception state for a given source node id and operational key.
|
|
21
|
+
*/
|
|
22
|
+
receptionStateFor(sourceNodeId: NodeId, operationalKey: Uint8Array): MessageReceptionStateEncryptedWithRollover;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=MessagingState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessagingState.d.ts","sourceRoot":"","sources":["../../../src/groups/MessagingState.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAA6C,cAAc,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,0CAA0C,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,qBAAa,cAAc;;gBAaX,OAAO,CAAC,EAAE,cAAc;IAMpC,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAKlC;IAED;;OAEG;IACH,UAAU,CAAC,cAAc,EAAE,UAAU;IAa/B,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,UAAQ;IAStD;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU;CAWrE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
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 MessagingState_exports = {};
|
|
20
|
+
__export(MessagingState_exports, {
|
|
21
|
+
MessagingState: () => MessagingState
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(MessagingState_exports);
|
|
24
|
+
var import_general = require("#general");
|
|
25
|
+
var import_MessageCounter = require("#protocol/MessageCounter.js");
|
|
26
|
+
var import_MessageReceptionState = require("#protocol/MessageReceptionState.js");
|
|
27
|
+
/**
|
|
28
|
+
* @license
|
|
29
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
30
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
31
|
+
*/
|
|
32
|
+
class MessagingState {
|
|
33
|
+
/**
|
|
34
|
+
* Message counter for sending data messages to a group per Operational key. No need to scope to a source node
|
|
35
|
+
* because we are the sending node
|
|
36
|
+
* TODO: For management: Make sure to start rotating the key early enough that a former counter-value is not used
|
|
37
|
+
* again for the same key.
|
|
38
|
+
*/
|
|
39
|
+
#groupDataCounters = /* @__PURE__ */ new Map();
|
|
40
|
+
/** Message reception state for data messages per Operational key and source node. */
|
|
41
|
+
#messageDataReceptionState = /* @__PURE__ */ new Map();
|
|
42
|
+
#storage;
|
|
43
|
+
constructor(storage) {
|
|
44
|
+
if (storage !== void 0) {
|
|
45
|
+
this.#storage = storage;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
set storage(storage) {
|
|
49
|
+
if (this.#storage !== void 0) {
|
|
50
|
+
throw new import_general.InternalError("Storage context can only be set once.");
|
|
51
|
+
}
|
|
52
|
+
this.#storage = storage;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Return the message counter for sending messages to a group with the given operational key.
|
|
56
|
+
*/
|
|
57
|
+
counterFor(operationalKey) {
|
|
58
|
+
if (!this.#storage) {
|
|
59
|
+
throw new import_general.ImplementationError("Group session cannot be created without storage context.");
|
|
60
|
+
}
|
|
61
|
+
const operationalKeyHex = import_general.Bytes.toHex(operationalKey);
|
|
62
|
+
let counter = this.#groupDataCounters.get(operationalKeyHex);
|
|
63
|
+
if (counter === void 0) {
|
|
64
|
+
counter = new import_MessageCounter.PersistedMessageCounter(this.#storage, `${operationalKeyHex}-data`);
|
|
65
|
+
this.#groupDataCounters.set(operationalKeyHex, counter);
|
|
66
|
+
}
|
|
67
|
+
return counter;
|
|
68
|
+
}
|
|
69
|
+
async removeCounter(key, forDelete = false) {
|
|
70
|
+
const operationalKeyHex = import_general.Bytes.toHex(key);
|
|
71
|
+
this.#groupDataCounters.delete(operationalKeyHex);
|
|
72
|
+
if (forDelete) {
|
|
73
|
+
await this.#storage?.delete(`${operationalKeyHex}-data`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Returns the message reception state for a given source node id and operational key.
|
|
78
|
+
*/
|
|
79
|
+
receptionStateFor(sourceNodeId, operationalKey) {
|
|
80
|
+
const operationalKeyHex = import_general.Bytes.toHex(operationalKey);
|
|
81
|
+
let receptionState = this.#messageDataReceptionState.get(operationalKeyHex)?.get(sourceNodeId);
|
|
82
|
+
if (receptionState === void 0) {
|
|
83
|
+
receptionState = new import_MessageReceptionState.MessageReceptionStateEncryptedWithRollover();
|
|
84
|
+
const keyMap = this.#messageDataReceptionState.get(operationalKeyHex) ?? /* @__PURE__ */ new Map();
|
|
85
|
+
keyMap.set(sourceNodeId, receptionState);
|
|
86
|
+
this.#messageDataReceptionState.set(operationalKeyHex, keyMap);
|
|
87
|
+
}
|
|
88
|
+
return receptionState;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=MessagingState.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/groups/MessagingState.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,qBAA0E;AAC1E,4BAAwC;AACxC,mCAA2D;AAP3D;AAAA;AAAA;AAAA;AAAA;AAUO,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOf,qBAAqB,oBAAI,IAAqC;AAAA;AAAA,EAG9D,6BAA6B,oBAAI,IAAqE;AAAA,EAC/G;AAAA,EAEA,YAAY,SAA0B;AAClC,QAAI,YAAY,QAAW;AACvB,WAAK,WAAW;AAAA,IACpB;AAAA,EACJ;AAAA,EAEA,IAAI,QAAQ,SAAyB;AACjC,QAAI,KAAK,aAAa,QAAW;AAC7B,YAAM,IAAI,6BAAc,uCAAuC;AAAA,IACnE;AACA,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,gBAA4B;AACnC,QAAI,CAAC,KAAK,UAAU;AAChB,YAAM,IAAI,mCAAoB,0DAA0D;AAAA,IAC5F;AACA,UAAM,oBAAoB,qBAAM,MAAM,cAAc;AACpD,QAAI,UAAU,KAAK,mBAAmB,IAAI,iBAAiB;AAC3D,QAAI,YAAY,QAAW;AACvB,gBAAU,IAAI,8CAAwB,KAAK,UAAU,GAAG,iBAAiB,OAAO;AAChF,WAAK,mBAAmB,IAAI,mBAAmB,OAAO;AAAA,IAC1D;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,cAAc,KAAiB,YAAY,OAAO;AACpD,UAAM,oBAAoB,qBAAM,MAAM,GAAG;AACzC,SAAK,mBAAmB,OAAO,iBAAiB;AAChD,QAAI,WAAW;AAEX,YAAM,KAAK,UAAU,OAAO,GAAG,iBAAiB,OAAO;AAAA,IAC3D;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkB,cAAsB,gBAA4B;AAChE,UAAM,oBAAoB,qBAAM,MAAM,cAAc;AACpD,QAAI,iBAAiB,KAAK,2BAA2B,IAAI,iBAAiB,GAAG,IAAI,YAAY;AAC7F,QAAI,mBAAmB,QAAW;AAC9B,uBAAiB,IAAI,wEAA2C;AAChE,YAAM,SAAS,KAAK,2BAA2B,IAAI,iBAAiB,KAAK,oBAAI,IAAI;AACjF,aAAO,IAAI,cAAc,cAAc;AACvC,WAAK,2BAA2B,IAAI,mBAAmB,MAAM;AAAA,IACjE;AACA,WAAO;AAAA,EACX;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/groups/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
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 __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var groups_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(groups_exports);
|
|
18
|
+
__reExport(groups_exports, require("./FabricGroupsManager.js"), module.exports);
|
|
19
|
+
__reExport(groups_exports, require("./KeySets.js"), module.exports);
|
|
20
|
+
/**
|
|
21
|
+
* @license
|
|
22
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
23
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
24
|
+
*/
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export * from "./codec/index.js";
|
|
|
11
11
|
export * from "./common/index.js";
|
|
12
12
|
export * from "./events/index.js";
|
|
13
13
|
export * from "./fabric/index.js";
|
|
14
|
+
export * from "./groups/index.js";
|
|
14
15
|
export * from "./interaction/index.js";
|
|
15
16
|
export * from "./mdns/index.js";
|
|
16
17
|
export * from "./peer/index.js";
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -23,6 +23,7 @@ __reExport(src_exports, require("./codec/index.js"), module.exports);
|
|
|
23
23
|
__reExport(src_exports, require("./common/index.js"), module.exports);
|
|
24
24
|
__reExport(src_exports, require("./events/index.js"), module.exports);
|
|
25
25
|
__reExport(src_exports, require("./fabric/index.js"), module.exports);
|
|
26
|
+
__reExport(src_exports, require("./groups/index.js"), module.exports);
|
|
26
27
|
__reExport(src_exports, require("./interaction/index.js"), module.exports);
|
|
27
28
|
__reExport(src_exports, require("./mdns/index.js"), module.exports);
|
|
28
29
|
__reExport(src_exports, require("./peer/index.js"), module.exports);
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,wBAAc,8BANd;AAOA,wBAAc,2BAPd;AAQA,wBAAc,mCARd;AASA,wBAAc,+BATd;AAUA,wBAAc,6BAVd;AAWA,wBAAc,8BAXd;AAYA,wBAAc,8BAZd;AAaA,wBAAc,8BAbd;AAcA,wBAAc,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAMA,wBAAc,8BANd;AAOA,wBAAc,2BAPd;AAQA,wBAAc,mCARd;AASA,wBAAc,+BATd;AAUA,wBAAc,6BAVd;AAWA,wBAAc,8BAXd;AAYA,wBAAc,8BAZd;AAaA,wBAAc,8BAbd;AAcA,wBAAc,8BAdd;AAeA,wBAAc,mCAfd;AAgBA,wBAAc,4BAhBd;AAiBA,wBAAc,4BAjBd;AAkBA,wBAAc,gCAlBd;AAmBA,wBAAc,qCAnBd;AAoBA,wBAAc,+BApBd;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2022-2023 Project CHIP Authors
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
1
|
import { AccessControl } from "#clusters/access-control";
|
|
7
2
|
import { AccessLevel } from "#model";
|
|
8
|
-
import { ClusterId, DeviceTypeId, EndpointNumber, FabricIndex,
|
|
9
|
-
import {
|
|
3
|
+
import { ClusterId, DeviceTypeId, EndpointNumber, FabricIndex, StatusResponseError, SubjectId } from "#types";
|
|
4
|
+
import { AccessControl as AccessControlContext } from "../action/server/AccessControl.js";
|
|
10
5
|
export type AclEntry = Omit<AccessControl.AccessControlEntry, "privilege"> & {
|
|
11
6
|
privilege: AccessLevel;
|
|
12
7
|
};
|
|
@@ -23,7 +18,7 @@ declare enum AuthModeNone {
|
|
|
23
18
|
export type IncomingSubjectDescriptor = {
|
|
24
19
|
isCommissioning: boolean;
|
|
25
20
|
authMode: AccessControl.AccessControlEntryAuthMode | AuthModeNone;
|
|
26
|
-
subjects:
|
|
21
|
+
subjects: SubjectId[];
|
|
27
22
|
fabricIndex: FabricIndex;
|
|
28
23
|
};
|
|
29
24
|
export declare class AccessDeniedError extends StatusResponseError {
|
|
@@ -39,14 +34,10 @@ export declare class AccessControlManager {
|
|
|
39
34
|
* Public method used to update the Access Control List on changes.
|
|
40
35
|
*/
|
|
41
36
|
updateAccessControlList(aclList?: AccessControl.AccessControlEntry[]): void;
|
|
42
|
-
/**
|
|
43
|
-
* Check if the given ACL entry is allowed to be used for the given subject descriptor, endpoint, and cluster ID.
|
|
44
|
-
*/
|
|
45
|
-
allowsPrivilege(session: SecureSession, endpoint: AclEndpointContext, clusterId: ClusterId, privilege: AccessLevel): boolean;
|
|
46
37
|
/**
|
|
47
38
|
* Determines the granted privileges for the given session, endpoint, and cluster ID and returns them.
|
|
48
39
|
*/
|
|
49
|
-
getGrantedPrivileges(
|
|
40
|
+
getGrantedPrivileges(context: AccessControlContext.Session, endpoint: AclEndpointContext, clusterId: ClusterId): AccessLevel[];
|
|
50
41
|
}
|
|
51
42
|
export {};
|
|
52
43
|
//# sourceMappingURL=AccessControlManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessControlManager.d.ts","sourceRoot":"","sources":["../../../src/interaction/AccessControlManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AccessControlManager.d.ts","sourceRoot":"","sources":["../../../src/interaction/AccessControlManager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAEH,SAAS,EACT,YAAY,EACZ,cAAc,EACd,WAAW,EAGX,mBAAmB,EACnB,SAAS,EACZ,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,aAAa,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE1F,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG;IACzE,SAAS,EAAE,WAAW,CAAC;CAC1B,CAAC;AACF,MAAM,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;AAEjC,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC,sBAAsB,CAAC;AACrE,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,EAAE,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG;IAC7B,EAAE,EAAE,cAAc,CAAC;IACnB,WAAW,EAAE,YAAY,EAAE,CAAC;CAC/B,CAAC;AAUF,aAAK,YAAY;IACb,IAAI,IAAI;CACX;AAED,MAAM,MAAM,yBAAyB,GAAG;IACpC,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,aAAa,CAAC,0BAA0B,GAAG,YAAY,CAAC;IAClE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;CAC5B,CAAC;AAEF,qBAAa,iBAAkB,SAAQ,mBAAmB;gBAC1C,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED;;GAEG;AACH,qBAAa,oBAAoB;;gBAWzB,OAAO,GAAE,aAAa,CAAC,kBAAkB,EAAO,EAChD,yBAAyB,CAAC,EAAE,CACxB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,yBAAyB,EACtC,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,SAAS,KACnB,OAAO;IAQhB;;OAEG;IACH,uBAAuB,CAAC,OAAO,GAAE,aAAa,CAAC,kBAAkB,EAAO,GAAG,IAAI;IA2D/E;;OAEG;IACH,oBAAoB,CAChB,OAAO,EAAE,oBAAoB,CAAC,OAAO,EACrC,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,SAAS,GACrB,WAAW,EAAE;CAoKnB"}
|