@matter/protocol 0.14.0 → 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
|
@@ -24,8 +24,8 @@ __export(Fabric_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(Fabric_exports);
|
|
26
26
|
var import_CertificateManager = require("#certificate/CertificateManager.js");
|
|
27
|
-
var import_group_key_management = require("#clusters/group-key-management");
|
|
28
27
|
var import_general = require("#general");
|
|
28
|
+
var import_FabricGroupsManager = require("#groups/FabricGroupsManager.js");
|
|
29
29
|
var import_PeerAddress = require("#peer/PeerAddress.js");
|
|
30
30
|
var import_types = require("#types");
|
|
31
31
|
/**
|
|
@@ -35,36 +35,8 @@ var import_types = require("#types");
|
|
|
35
35
|
*/
|
|
36
36
|
const logger = import_general.Logger.get("Fabric");
|
|
37
37
|
const COMPRESSED_FABRIC_ID_INFO = import_general.Bytes.fromString("CompressedFabric");
|
|
38
|
-
const GROUP_SECURITY_INFO = import_general.Bytes.fromString("GroupKey v1.0");
|
|
39
38
|
class PublicKeyError extends import_general.MatterError {
|
|
40
39
|
}
|
|
41
|
-
var OperationalGroupKeySet;
|
|
42
|
-
((OperationalGroupKeySet2) => {
|
|
43
|
-
OperationalGroupKeySet2.asTlvGroupSet = (operationalGroupSet) => {
|
|
44
|
-
const {
|
|
45
|
-
groupKeySetId,
|
|
46
|
-
epochKey0,
|
|
47
|
-
epochStartTime0,
|
|
48
|
-
epochKey1,
|
|
49
|
-
epochStartTime1,
|
|
50
|
-
epochKey2,
|
|
51
|
-
epochStartTime2,
|
|
52
|
-
groupKeySecurityPolicy,
|
|
53
|
-
groupKeyMulticastPolicy
|
|
54
|
-
} = operationalGroupSet;
|
|
55
|
-
return {
|
|
56
|
-
groupKeySetId,
|
|
57
|
-
epochKey0,
|
|
58
|
-
epochStartTime0,
|
|
59
|
-
epochKey1,
|
|
60
|
-
epochStartTime1,
|
|
61
|
-
epochKey2,
|
|
62
|
-
epochStartTime2,
|
|
63
|
-
groupKeySecurityPolicy,
|
|
64
|
-
groupKeyMulticastPolicy
|
|
65
|
-
};
|
|
66
|
-
};
|
|
67
|
-
})(OperationalGroupKeySet || (OperationalGroupKeySet = {}));
|
|
68
40
|
class Fabric {
|
|
69
41
|
fabricIndex;
|
|
70
42
|
fabricId;
|
|
@@ -80,9 +52,11 @@ class Fabric {
|
|
|
80
52
|
operationalCert;
|
|
81
53
|
#keyPair;
|
|
82
54
|
#sessions = /* @__PURE__ */ new Set();
|
|
55
|
+
#groupManager;
|
|
83
56
|
#label;
|
|
84
57
|
#removeCallbacks = new Array();
|
|
85
58
|
#persistCallback;
|
|
59
|
+
#storage;
|
|
86
60
|
constructor(config) {
|
|
87
61
|
this.fabricIndex = config.fabricIndex;
|
|
88
62
|
this.fabricId = config.fabricId;
|
|
@@ -98,6 +72,7 @@ class Fabric {
|
|
|
98
72
|
this.operationalCert = config.operationalCert;
|
|
99
73
|
this.#label = config.label;
|
|
100
74
|
this.#keyPair = (0, import_general.PrivateKey)(config.keyPair);
|
|
75
|
+
this.#groupManager = new import_FabricGroupsManager.FabricGroupsManager(this);
|
|
101
76
|
}
|
|
102
77
|
get config() {
|
|
103
78
|
return {
|
|
@@ -130,6 +105,16 @@ class Fabric {
|
|
|
130
105
|
this.#label = label;
|
|
131
106
|
await this.persist();
|
|
132
107
|
}
|
|
108
|
+
set storage(storage) {
|
|
109
|
+
this.#storage = storage;
|
|
110
|
+
this.#groupManager.storage = storage;
|
|
111
|
+
}
|
|
112
|
+
get storage() {
|
|
113
|
+
return this.#storage;
|
|
114
|
+
}
|
|
115
|
+
get groups() {
|
|
116
|
+
return this.#groupManager;
|
|
117
|
+
}
|
|
133
118
|
get publicKey() {
|
|
134
119
|
return this.#keyPair.publicKey;
|
|
135
120
|
}
|
|
@@ -151,13 +136,29 @@ class Fabric {
|
|
|
151
136
|
matchesKeyPair(keyPair) {
|
|
152
137
|
return import_general.Bytes.areEqual(this.#keyPair.publicKey, keyPair.publicKey) && import_general.Bytes.areEqual(this.#keyPair.privateKey, keyPair.privateKey);
|
|
153
138
|
}
|
|
154
|
-
|
|
139
|
+
#generateSalt(nodeId, random) {
|
|
155
140
|
const writer = new import_general.DataWriter(import_general.Endian.Little);
|
|
156
141
|
writer.writeByteArray(random);
|
|
157
142
|
writer.writeByteArray(this.rootPublicKey);
|
|
158
143
|
writer.writeUInt64(this.fabricId);
|
|
159
144
|
writer.writeUInt64(nodeId);
|
|
160
|
-
return
|
|
145
|
+
return writer.toByteArray();
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Returns the destination IDs for a given nodeId, random value and optional groupId.
|
|
149
|
+
* When groupId is provided, it returns the time-wise valid operational keys for that groupId.
|
|
150
|
+
*/
|
|
151
|
+
async currentDestinationIdFor(nodeId, random) {
|
|
152
|
+
return await import_general.Crypto.hmac(this.groups.keySets.currentKeyForId(0).key, this.#generateSalt(nodeId, random));
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Returns the destination IDs for a given nodeId, random value and optional groupId.
|
|
156
|
+
* When groupId is provided, it returns all operational keys for that groupId.
|
|
157
|
+
*/
|
|
158
|
+
async destinationIdsFor(nodeId, random) {
|
|
159
|
+
const salt = this.#generateSalt(nodeId, random);
|
|
160
|
+
const destinationIds = this.groups.keySets.allKeysForId(0).map(({ key }) => import_general.Crypto.hmac(key, salt));
|
|
161
|
+
return await Promise.all(destinationIds);
|
|
161
162
|
}
|
|
162
163
|
addSession(session) {
|
|
163
164
|
this.#sessions.add(session);
|
|
@@ -188,35 +189,6 @@ class Fabric {
|
|
|
188
189
|
persist(isUpdate = true) {
|
|
189
190
|
return this.#persistCallback?.(isUpdate);
|
|
190
191
|
}
|
|
191
|
-
getGroupKeySet(groupKeySetId) {
|
|
192
|
-
if (groupKeySetId === 0) {
|
|
193
|
-
return OperationalGroupKeySet.asTlvGroupSet(this.getGroupSetForIpk());
|
|
194
|
-
}
|
|
195
|
-
return void 0;
|
|
196
|
-
}
|
|
197
|
-
getGroupSetForIpk() {
|
|
198
|
-
return {
|
|
199
|
-
groupKeySetId: 0,
|
|
200
|
-
epochKey0: this.identityProtectionKey,
|
|
201
|
-
operationalEpochKey0: this.operationalIdentityProtectionKey,
|
|
202
|
-
epochStartTime0: 0,
|
|
203
|
-
// or do we need to track Fabric creation date?
|
|
204
|
-
groupSessionId0: null,
|
|
205
|
-
epochKey1: null,
|
|
206
|
-
operationalEpochKey1: null,
|
|
207
|
-
epochStartTime1: null,
|
|
208
|
-
groupSessionId1: null,
|
|
209
|
-
epochKey2: null,
|
|
210
|
-
operationalEpochKey2: null,
|
|
211
|
-
epochStartTime2: null,
|
|
212
|
-
groupSessionId2: null,
|
|
213
|
-
groupKeySecurityPolicy: import_group_key_management.GroupKeyManagement.GroupKeySecurityPolicy.TrustFirst,
|
|
214
|
-
groupKeyMulticastPolicy: import_group_key_management.GroupKeyManagement.GroupKeyMulticastPolicy.PerGroupId
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
getAllGroupKeySets() {
|
|
218
|
-
return [OperationalGroupKeySet.asTlvGroupSet(this.getGroupSetForIpk())];
|
|
219
|
-
}
|
|
220
192
|
get externalInformation() {
|
|
221
193
|
return {
|
|
222
194
|
fabricIndex: this.fabricIndex,
|
|
@@ -230,6 +202,10 @@ class Fabric {
|
|
|
230
202
|
addressOf(nodeId) {
|
|
231
203
|
return (0, import_PeerAddress.PeerAddress)({ fabricIndex: this.fabricIndex, nodeId });
|
|
232
204
|
}
|
|
205
|
+
groupAddressOf(groupId) {
|
|
206
|
+
import_types.GroupId.assertGroupId(groupId);
|
|
207
|
+
return (0, import_PeerAddress.PeerAddress)({ fabricIndex: this.fabricIndex, nodeId: import_types.NodeId.fromGroupId(groupId) });
|
|
208
|
+
}
|
|
233
209
|
}
|
|
234
210
|
class FabricBuilder {
|
|
235
211
|
#keyPair;
|
|
@@ -354,7 +330,7 @@ class FabricBuilder {
|
|
|
354
330
|
if (this.#operationalCert === void 0 || this.#fabricId === void 0 || this.#nodeId === void 0)
|
|
355
331
|
throw new import_general.InternalError("operationalCert needs to be set");
|
|
356
332
|
this.#fabricIndex = fabricIndex;
|
|
357
|
-
const saltWriter = new import_general.DataWriter(
|
|
333
|
+
const saltWriter = new import_general.DataWriter();
|
|
358
334
|
saltWriter.writeUInt64(this.#fabricId);
|
|
359
335
|
const operationalId = await import_general.Crypto.hkdf(
|
|
360
336
|
this.#rootPublicKey.slice(1),
|
|
@@ -377,7 +353,7 @@ class FabricBuilder {
|
|
|
377
353
|
operationalIdentityProtectionKey: await import_general.Crypto.hkdf(
|
|
378
354
|
this.#identityProtectionKey,
|
|
379
355
|
operationalId,
|
|
380
|
-
GROUP_SECURITY_INFO
|
|
356
|
+
import_FabricGroupsManager.GROUP_SECURITY_INFO
|
|
381
357
|
),
|
|
382
358
|
intermediateCACert: this.#intermediateCACert,
|
|
383
359
|
operationalCert: this.#operationalCert,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/fabric/Fabric.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,gCAKO;AACP,
|
|
5
|
-
"names": [
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FabricManager.d.ts","sourceRoot":"","sources":["../../../src/fabric/FabricManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,YAAY,EACZ,WAAW,EACX,aAAa,EAEb,GAAG,EACH,WAAW,EAEX,YAAY,EACZ,UAAU,EACV,cAAc,EAEjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,qDAAqD;AACrD,qBAAa,mBAAoB,SAAQ,WAAW;CAAG;AACvD,qBAAa,oBAAqB,SAAQ,WAAW;CAAG;AAExD,oBAAY,YAAY;IACpB,KAAK,IAAA;IACL,OAAO,IAAA;IACP,OAAO,IAAA;CACV;AAED,qBAAa,aAAa;;gBAaV,OAAO,CAAC,EAAE,cAAc;IA2BpC,IAAI,YAAY,gCAEf;IAEK,CAAC,YAAY,CAAC,SAAS,CAAC;IAI9B,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAM9C,IAAI,MAAM;;;;;MAET;IAEK,KAAK;IAOX,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW;IAOtC,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW;IAWtC,mBAAmB;IAanB,cAAc,IAAI,YAAY,CAAC,IAAI,CAAC;IAmBpC,SAAS,CAAC,MAAM,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"FabricManager.d.ts","sourceRoot":"","sources":["../../../src/fabric/FabricManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,YAAY,EACZ,WAAW,EACX,aAAa,EAEb,GAAG,EACH,WAAW,EAEX,YAAY,EACZ,UAAU,EACV,cAAc,EAEjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,qDAAqD;AACrD,qBAAa,mBAAoB,SAAQ,WAAW;CAAG;AACvD,qBAAa,oBAAqB,SAAQ,WAAW;CAAG;AAExD,oBAAY,YAAY;IACpB,KAAK,IAAA;IACL,OAAO,IAAA;IACP,OAAO,IAAA;CACV;AAED,qBAAa,aAAa;;gBAaV,OAAO,CAAC,EAAE,cAAc;IA2BpC,IAAI,YAAY,gCAEf;IAEK,CAAC,YAAY,CAAC,SAAS,CAAC;IAI9B,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAM9C,IAAI,MAAM;;;;;MAET;IAEK,KAAK;IAOX,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW;IAOtC,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW;IAWtC,mBAAmB;IAanB,cAAc,IAAI,YAAY,CAAC,IAAI,CAAC;IAmBpC,SAAS,CAAC,MAAM,EAAE,MAAM;IA4BlB,YAAY,CAAC,WAAW,EAAE,WAAW;IAc3C,CAAC,MAAM,CAAC,QAAQ,CAAC;IAMjB,IAAI,OAAO,aAIV;IAED,IAAI,MAAM,WAET;IAED,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO;IAI3C,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC;IAIlC,2BAA2B,CAAC,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU;IAaxF,aAAa,CAAC,OAAO,EAAE,GAAG;IAW1B,WAAW,CAAC,KAAK,EAAE,WAAW;IAMxB,YAAY,CAAC,MAAM,EAAE,MAAM;IAc3B,YAAY,CAAC,WAAW,EAAE,WAAW;CAS9C"}
|
|
@@ -157,6 +157,9 @@ class FabricManager {
|
|
|
157
157
|
}
|
|
158
158
|
});
|
|
159
159
|
};
|
|
160
|
+
if (this.#storage !== void 0) {
|
|
161
|
+
fabric.storage = this.#storage.createContext(`fabric-${fabricIndex}`);
|
|
162
|
+
}
|
|
160
163
|
if (this.#initializationDone) {
|
|
161
164
|
this.#events.added.emit(fabric);
|
|
162
165
|
}
|
|
@@ -170,6 +173,7 @@ class FabricManager {
|
|
|
170
173
|
);
|
|
171
174
|
this.#fabrics.delete(fabricIndex);
|
|
172
175
|
await this.persistFabrics();
|
|
176
|
+
await fabric.storage?.clearAll();
|
|
173
177
|
this.#events.deleted.emit(fabric);
|
|
174
178
|
}
|
|
175
179
|
[Symbol.iterator]() {
|
|
@@ -192,9 +196,10 @@ class FabricManager {
|
|
|
192
196
|
async findFabricFromDestinationId(destinationId, initiatorRandom) {
|
|
193
197
|
this.#construction.assert();
|
|
194
198
|
for (const fabric of this.#fabrics.values()) {
|
|
195
|
-
const
|
|
196
|
-
if (
|
|
197
|
-
|
|
199
|
+
const candidateDestinationIds = await fabric.destinationIdsFor(fabric.nodeId, initiatorRandom);
|
|
200
|
+
if (candidateDestinationIds.some((candidate) => import_general.Bytes.areEqual(candidate, destinationId))) {
|
|
201
|
+
return fabric;
|
|
202
|
+
}
|
|
198
203
|
}
|
|
199
204
|
throw new FabricNotFoundError();
|
|
200
205
|
}
|
|
@@ -208,7 +213,8 @@ class FabricManager {
|
|
|
208
213
|
return void 0;
|
|
209
214
|
}
|
|
210
215
|
findByIndex(index) {
|
|
211
|
-
|
|
216
|
+
this.#construction.assert();
|
|
217
|
+
return this.#fabrics.get(index);
|
|
212
218
|
}
|
|
213
219
|
async updateFabric(fabric) {
|
|
214
220
|
await this.#construction;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/fabric/FabricManager.ts"],
|
|
4
|
-
"mappings": "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
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["FabricAction"]
|
|
6
6
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Fabric } from "#fabric/Fabric.js";
|
|
7
|
+
import { BasicMap, StorageContext } from "#general";
|
|
8
|
+
import { GroupKeySet, KeySets, OperationalKeySet } from "#groups/KeySets.js";
|
|
9
|
+
import { MessagingState } from "#groups/MessagingState.js";
|
|
10
|
+
import { GroupId } from "#types";
|
|
11
|
+
export declare const GROUP_SECURITY_INFO: Uint8Array<ArrayBufferLike>;
|
|
12
|
+
/**
|
|
13
|
+
* Class that contains an operational view on the Group Keys for a fabric
|
|
14
|
+
*/
|
|
15
|
+
export declare class FabricGroupsManager {
|
|
16
|
+
#private;
|
|
17
|
+
constructor(fabric: Fabric, storage?: StorageContext);
|
|
18
|
+
set storage(storage: StorageContext);
|
|
19
|
+
/** Operative lookup of the group key sets by their id. */
|
|
20
|
+
get keySets(): KeySets<OperationalKeySet>;
|
|
21
|
+
get messaging(): MessagingState;
|
|
22
|
+
/** Operative lookup of the group key set id and the key by a group session Id. */
|
|
23
|
+
get sessions(): Map<number, {
|
|
24
|
+
keySetId: number;
|
|
25
|
+
key: Uint8Array;
|
|
26
|
+
}[]>;
|
|
27
|
+
get groupKeyIdMap(): BasicMap<GroupId, number>;
|
|
28
|
+
set groupKeyIdMap(map: Map<GroupId, number>);
|
|
29
|
+
get endpoints(): Map<GroupId, import("#types").EndpointNumber[]>;
|
|
30
|
+
currentKeyForGroup(groupId: GroupId): {
|
|
31
|
+
keySetId: number;
|
|
32
|
+
key: Uint8Array;
|
|
33
|
+
sessionId?: number;
|
|
34
|
+
startTime: number | bigint;
|
|
35
|
+
};
|
|
36
|
+
subjectForGroup(id: GroupId, keySetId: number): import("../index.js").Subject;
|
|
37
|
+
multicastAddressFor(groupId: GroupId): string;
|
|
38
|
+
/**
|
|
39
|
+
* Sets new group key set data and pre-calculates all operative data like session ids and operational keys.
|
|
40
|
+
* Overwriting the existing one if it exists.
|
|
41
|
+
*/
|
|
42
|
+
setFromGroupKeySet(groupKeySet: GroupKeySet): Promise<void>;
|
|
43
|
+
/** Removes a group key set by its id and cleans up the counters and data. */
|
|
44
|
+
removeGroupKeySet(groupKeySetId: number): Promise<boolean>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=FabricGroupsManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FabricGroupsManager.d.ts","sourceRoot":"","sources":["../../../src/groups/FabricGroupsManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAiD,cAAc,EAAE,MAAM,UAAU,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGjC,eAAO,MAAM,mBAAmB,6BAAoC,CAAC;AAErE;;GAEG;AACH,qBAAa,mBAAmB;;gBAQhB,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc;IA6BpD,IAAI,OAAO,CAAC,OAAO,EAAE,cAAc,EAElC;IAED,0DAA0D;IAC1D,IAAI,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAExC;IAED,IAAI,SAAS,IAAI,cAAc,CAE9B;IAED,kFAAkF;IAClF,IAAI,QAAQ;;;SAEX;IAED,IAAI,aAAa,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAE7C;IAED,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EAE1C;IAED,IAAI,SAAS,oDAEZ;IAED,kBAAkB,CAAC,OAAO,EAAE,OAAO;;;;;;IAInC,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;IAI7C,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAgB7C;;;OAGG;IACG,kBAAkB,CAAC,WAAW,EAAE,WAAW;IA8BjD,6EAA6E;IACvE,iBAAiB,CAAC,aAAa,EAAE,MAAM;CAoBhD"}
|
|
@@ -0,0 +1,155 @@
|
|
|
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 FabricGroupsManager_exports = {};
|
|
20
|
+
__export(FabricGroupsManager_exports, {
|
|
21
|
+
FabricGroupsManager: () => FabricGroupsManager,
|
|
22
|
+
GROUP_SECURITY_INFO: () => GROUP_SECURITY_INFO
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(FabricGroupsManager_exports);
|
|
25
|
+
var import_general = require("#general");
|
|
26
|
+
var import_KeySets = require("#groups/KeySets.js");
|
|
27
|
+
var import_MessagingState = require("#groups/MessagingState.js");
|
|
28
|
+
var import_Groups = require("./Groups.js");
|
|
29
|
+
/**
|
|
30
|
+
* @license
|
|
31
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
32
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
33
|
+
*/
|
|
34
|
+
const GROUP_SECURITY_INFO = import_general.Bytes.fromString("GroupKey v1.0");
|
|
35
|
+
class FabricGroupsManager {
|
|
36
|
+
#fabric;
|
|
37
|
+
#groups;
|
|
38
|
+
#messagingState;
|
|
39
|
+
/** Operationally enhanced variants of the group key sets based on their ID. */
|
|
40
|
+
#keySets = new import_KeySets.KeySets();
|
|
41
|
+
constructor(fabric, storage) {
|
|
42
|
+
this.#fabric = fabric;
|
|
43
|
+
this.#groups = new import_Groups.Groups(fabric, this.#keySets);
|
|
44
|
+
this.#messagingState = new import_MessagingState.MessagingState(storage);
|
|
45
|
+
this.#keySets.add({
|
|
46
|
+
groupKeySetId: 0,
|
|
47
|
+
epochKey0: fabric.identityProtectionKey,
|
|
48
|
+
operationalEpochKey0: fabric.operationalIdentityProtectionKey,
|
|
49
|
+
epochStartTime0: 0,
|
|
50
|
+
// 0 is always ok, but only for the IPK key
|
|
51
|
+
groupSessionId0: null,
|
|
52
|
+
epochKey1: null,
|
|
53
|
+
operationalEpochKey1: null,
|
|
54
|
+
epochStartTime1: null,
|
|
55
|
+
groupSessionId1: null,
|
|
56
|
+
epochKey2: null,
|
|
57
|
+
operationalEpochKey2: null,
|
|
58
|
+
epochStartTime2: null,
|
|
59
|
+
groupSessionId2: null,
|
|
60
|
+
groupKeySecurityPolicy: 0,
|
|
61
|
+
// GroupKeyManagement.GroupKeySecurityPolicy.TrustFirst, the other option is provisional
|
|
62
|
+
groupKeyMulticastPolicy: 0
|
|
63
|
+
// GroupKeyManagement.GroupKeyMulticastPolicy.PerGroupId, provisional!
|
|
64
|
+
});
|
|
65
|
+
if (storage !== void 0) {
|
|
66
|
+
this.storage = storage;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
set storage(storage) {
|
|
70
|
+
this.#messagingState.storage = storage;
|
|
71
|
+
}
|
|
72
|
+
/** Operative lookup of the group key sets by their id. */
|
|
73
|
+
get keySets() {
|
|
74
|
+
return this.#keySets;
|
|
75
|
+
}
|
|
76
|
+
get messaging() {
|
|
77
|
+
return this.#messagingState;
|
|
78
|
+
}
|
|
79
|
+
/** Operative lookup of the group key set id and the key by a group session Id. */
|
|
80
|
+
get sessions() {
|
|
81
|
+
return this.#keySets.sessions;
|
|
82
|
+
}
|
|
83
|
+
get groupKeyIdMap() {
|
|
84
|
+
return this.#groups.idMap;
|
|
85
|
+
}
|
|
86
|
+
set groupKeyIdMap(map) {
|
|
87
|
+
this.#groups.idMap = map;
|
|
88
|
+
}
|
|
89
|
+
get endpoints() {
|
|
90
|
+
return this.#groups.endpointMap;
|
|
91
|
+
}
|
|
92
|
+
currentKeyForGroup(groupId) {
|
|
93
|
+
return this.#groups.currentKeyForId(groupId);
|
|
94
|
+
}
|
|
95
|
+
subjectForGroup(id, keySetId) {
|
|
96
|
+
return this.#groups.subjectForGroup(id, keySetId);
|
|
97
|
+
}
|
|
98
|
+
multicastAddressFor(groupId) {
|
|
99
|
+
return this.#groups.multicastAddress(groupId);
|
|
100
|
+
}
|
|
101
|
+
/*
|
|
102
|
+
TODO for Controller to generate new epochs
|
|
103
|
+
addGroupEpoch(groupKeySetId: number, startTimeMs = Time.nowMs()) {
|
|
104
|
+
// TODO for Controller to generate new epochs
|
|
105
|
+
const epochKey = Crypto.getRandomData(CRYPTO_SYMMETRIC_KEY_LENGTH);
|
|
106
|
+
const operationalEpochKey = Crypto.hkdf(epochKey, this.#fabric.operationalId, GROUP_SECURITY_INFO);
|
|
107
|
+
const epochStartTime = startTimeMs * 1000;
|
|
108
|
+
logger.debug(`addGroupEpoch: epochStartTime=${epochStartTime}`, operationalEpochKey);
|
|
109
|
+
// TODO extend in structure and such
|
|
110
|
+
}
|
|
111
|
+
*/
|
|
112
|
+
/**
|
|
113
|
+
* Sets new group key set data and pre-calculates all operative data like session ids and operational keys.
|
|
114
|
+
* Overwriting the existing one if it exists.
|
|
115
|
+
*/
|
|
116
|
+
async setFromGroupKeySet(groupKeySet) {
|
|
117
|
+
const { groupKeySetId, epochKey0, epochKey1, epochKey2 } = groupKeySet;
|
|
118
|
+
if (epochKey0 === null) {
|
|
119
|
+
throw new import_general.MatterFlowError("EpochKey0 must be set");
|
|
120
|
+
}
|
|
121
|
+
await this.#cleanUpCounters(groupKeySetId);
|
|
122
|
+
const operationalId = this.#fabric.operationalId;
|
|
123
|
+
const operationalEpochKey0 = await import_general.Crypto.hkdf(epochKey0, operationalId, GROUP_SECURITY_INFO);
|
|
124
|
+
const operationalEpochKey1 = epochKey1 !== null ? await import_general.Crypto.hkdf(epochKey1, operationalId, GROUP_SECURITY_INFO) : null;
|
|
125
|
+
const operationalEpochKey2 = epochKey2 !== null ? await import_general.Crypto.hkdf(epochKey2, operationalId, GROUP_SECURITY_INFO) : null;
|
|
126
|
+
this.#keySets.add({
|
|
127
|
+
...groupKeySet,
|
|
128
|
+
operationalEpochKey0,
|
|
129
|
+
groupSessionId0: await this.#keySets.sessionIdFromKey(operationalEpochKey0),
|
|
130
|
+
operationalEpochKey1,
|
|
131
|
+
groupSessionId1: operationalEpochKey1 !== null ? await this.#keySets.sessionIdFromKey(operationalEpochKey1) : null,
|
|
132
|
+
operationalEpochKey2,
|
|
133
|
+
groupSessionId2: operationalEpochKey2 !== null ? await this.#keySets.sessionIdFromKey(operationalEpochKey2) : null
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/** Removes a group key set by its id and cleans up the counters and data. */
|
|
137
|
+
async removeGroupKeySet(groupKeySetId) {
|
|
138
|
+
if (groupKeySetId === 0) {
|
|
139
|
+
throw new import_general.InternalError("Cannot remove the group key set 0.");
|
|
140
|
+
}
|
|
141
|
+
await this.#cleanUpCounters(groupKeySetId, true);
|
|
142
|
+
return this.#keySets.delete("groupKeySetId", groupKeySetId);
|
|
143
|
+
}
|
|
144
|
+
/** Cleans up the counters and data for a group key set by its id. */
|
|
145
|
+
async #cleanUpCounters(groupKeySetId, forDelete = false) {
|
|
146
|
+
if (this.#keySets.forId(groupKeySetId) === void 0) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const operationalKeys = this.#keySets.allKeysForId(groupKeySetId);
|
|
150
|
+
for (const { key } of operationalKeys) {
|
|
151
|
+
await this.#messagingState.removeCounter(key, forDelete);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=FabricGroupsManager.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/groups/FabricGroupsManager.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Subject } from "#action/index.js";
|
|
7
|
+
import { Fabric } from "#fabric/Fabric.js";
|
|
8
|
+
import { BasicMap } from "#general";
|
|
9
|
+
import { EndpointNumber, GroupId } from "#types";
|
|
10
|
+
import { KeySets, OperationalKeySet } from "./KeySets.js";
|
|
11
|
+
export declare class Groups {
|
|
12
|
+
#private;
|
|
13
|
+
/** Operational variant of the group table, maps group Ids to a list of enabled endpoints. */
|
|
14
|
+
readonly endpointMap: Map<GroupId, EndpointNumber[]>;
|
|
15
|
+
constructor(fabric: Fabric, keySets: KeySets<OperationalKeySet>);
|
|
16
|
+
/** Operative lookup of the group key sets by a group id and to react on added removed groups. */
|
|
17
|
+
get idMap(): BasicMap<GroupId, number>;
|
|
18
|
+
/** Updates the group key id map when changed in Group Key Management Cluster. Only changes are taken over. */
|
|
19
|
+
set idMap(map: Map<GroupId, number>);
|
|
20
|
+
subjectForGroup(id: GroupId, keySetId: number): Subject;
|
|
21
|
+
/** Returns the multicast address for a given group id for this fabric. */
|
|
22
|
+
multicastAddress(groupId: GroupId): string;
|
|
23
|
+
/**
|
|
24
|
+
* Returns the current operational group key for a given group id and returns the keys, start time and
|
|
25
|
+
* their session IDs.
|
|
26
|
+
*/
|
|
27
|
+
currentKeyForId(groupId: GroupId): {
|
|
28
|
+
keySetId: number;
|
|
29
|
+
key: Uint8Array;
|
|
30
|
+
sessionId?: number;
|
|
31
|
+
startTime: number | bigint;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=Groups.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Groups.d.ts","sourceRoot":"","sources":["../../../src/groups/Groups.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAsD,MAAM,UAAU,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE1D,qBAAa,MAAM;;IAOf,6FAA6F;IAC7F,QAAQ,CAAC,WAAW,iCAAwC;gBAEhD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAK/D,iGAAiG;IACjG,IAAI,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAErC;IAED,8GAA8G;IAC9G,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EAUlC;IAED,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;IAQ7C,0EAA0E;IAC1E,gBAAgB,CAAC,OAAO,EAAE,OAAO;IAgBjC;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO;;;;;;CAOnC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
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 Groups_exports = {};
|
|
20
|
+
__export(Groups_exports, {
|
|
21
|
+
Groups: () => Groups
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(Groups_exports);
|
|
24
|
+
var import_action = require("#action/index.js");
|
|
25
|
+
var import_general = require("#general");
|
|
26
|
+
var import_types = require("#types");
|
|
27
|
+
/**
|
|
28
|
+
* @license
|
|
29
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
30
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
31
|
+
*/
|
|
32
|
+
class Groups {
|
|
33
|
+
#fabric;
|
|
34
|
+
#keySets;
|
|
35
|
+
/** Operational variant of the group key map attribute from Group Key Management cluster, maps group Ids to key sets. */
|
|
36
|
+
#groupKeyIdMap = new import_general.BasicMap();
|
|
37
|
+
/** Operational variant of the group table, maps group Ids to a list of enabled endpoints. */
|
|
38
|
+
endpointMap = /* @__PURE__ */ new Map();
|
|
39
|
+
constructor(fabric, keySets) {
|
|
40
|
+
this.#fabric = fabric;
|
|
41
|
+
this.#keySets = keySets;
|
|
42
|
+
}
|
|
43
|
+
/** Operative lookup of the group key sets by a group id and to react on added removed groups. */
|
|
44
|
+
get idMap() {
|
|
45
|
+
return this.#groupKeyIdMap;
|
|
46
|
+
}
|
|
47
|
+
/** Updates the group key id map when changed in Group Key Management Cluster. Only changes are taken over. */
|
|
48
|
+
set idMap(map) {
|
|
49
|
+
for (const [groupId, keySetId] of map.entries()) {
|
|
50
|
+
this.#groupKeyIdMap.set(groupId, keySetId);
|
|
51
|
+
}
|
|
52
|
+
for (const groupId of this.#groupKeyIdMap.keys()) {
|
|
53
|
+
if (!map.has(groupId)) {
|
|
54
|
+
this.#groupKeyIdMap.delete(groupId);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
subjectForGroup(id, keySetId) {
|
|
59
|
+
return import_action.Subject.Group({
|
|
60
|
+
id,
|
|
61
|
+
hasValidMapping: this.idMap.get(id) === keySetId,
|
|
62
|
+
endpoints: this.endpointMap.get(id) ?? []
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/** Returns the multicast address for a given group id for this fabric. */
|
|
66
|
+
multicastAddress(groupId) {
|
|
67
|
+
import_types.GroupId.assertGroupId(groupId);
|
|
68
|
+
const writer = new import_general.DataWriter();
|
|
69
|
+
writer.writeUInt16(65333);
|
|
70
|
+
writer.writeUInt16(64);
|
|
71
|
+
writer.writeUInt8(253);
|
|
72
|
+
writer.writeUInt64(this.#fabric.fabricId);
|
|
73
|
+
writer.writeUInt8(0);
|
|
74
|
+
writer.writeUInt16((0, import_types.GroupId)(groupId));
|
|
75
|
+
return (0, import_general.ipv6BytesToString)(writer.toByteArray());
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Returns the current operational group key for a given group id and returns the keys, start time and
|
|
79
|
+
* their session IDs.
|
|
80
|
+
*/
|
|
81
|
+
currentKeyForId(groupId) {
|
|
82
|
+
const keySetId = this.#groupKeyIdMap.get(groupId);
|
|
83
|
+
if (keySetId === void 0) {
|
|
84
|
+
throw new import_general.ImplementationError(`No group key set found for groupId ${groupId}.`);
|
|
85
|
+
}
|
|
86
|
+
return { ...this.#keySets.currentKeyForId(keySetId), keySetId };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=Groups.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/groups/Groups.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,oBAAwB;AAExB,qBAA6E;AAC7E,mBAAwC;AARxC;AAAA;AAAA;AAAA;AAAA;AAWO,MAAM,OAAO;AAAA,EAChB;AAAA,EACA;AAAA;AAAA,EAGS,iBAAiB,IAAI,wBAA0B;AAAA;AAAA,EAG/C,cAAc,oBAAI,IAA+B;AAAA,EAE1D,YAAY,QAAgB,SAAqC;AAC7D,SAAK,UAAU;AACf,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA,EAGA,IAAI,QAAmC;AACnC,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAGA,IAAI,MAAM,KAA2B;AACjC,eAAW,CAAC,SAAS,QAAQ,KAAK,IAAI,QAAQ,GAAG;AAC7C,WAAK,eAAe,IAAI,SAAS,QAAQ;AAAA,IAC7C;AACA,eAAW,WAAW,KAAK,eAAe,KAAK,GAAG;AAC9C,UAAI,CAAC,IAAI,IAAI,OAAO,GAAG;AAEnB,aAAK,eAAe,OAAO,OAAO;AAAA,MACtC;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,gBAAgB,IAAa,UAAkB;AAC3C,WAAO,sBAAQ,MAAM;AAAA,MACjB;AAAA,MACA,iBAAiB,KAAK,MAAM,IAAI,EAAE,MAAM;AAAA,MACxC,WAAW,KAAK,YAAY,IAAI,EAAE,KAAK,CAAC;AAAA,IAC5C,CAAC;AAAA,EACL;AAAA;AAAA,EAGA,iBAAiB,SAAkB;AAC/B,yBAAQ,cAAc,OAAO;AAK7B,UAAM,SAAS,IAAI,0BAAW;AAC9B,WAAO,YAAY,KAAM;AACzB,WAAO,YAAY,EAAM;AACzB,WAAO,WAAW,GAAI;AACtB,WAAO,YAAY,KAAK,QAAQ,QAAQ;AACxC,WAAO,WAAW,CAAI;AACtB,WAAO,gBAAY,sBAAQ,OAAO,CAAC;AACnC,eAAO,kCAAkB,OAAO,YAAY,CAAC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAgB,SAAkB;AAC9B,UAAM,WAAW,KAAK,eAAe,IAAI,OAAO;AAChD,QAAI,aAAa,QAAW;AACxB,YAAM,IAAI,mCAAoB,sCAAsC,OAAO,GAAG;AAAA,IAClF;AACA,WAAO,EAAE,GAAG,KAAK,SAAS,gBAAgB,QAAQ,GAAG,SAAS;AAAA,EAClE;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|