Line data Source code
1 : /*
2 : *
3 : * Copyright (c) 2025 Project CHIP Authors
4 : * All rights reserved.
5 : *
6 : * Licensed under the Apache License, Version 2.0 (the "License");
7 : * you may not use this file except in compliance with the License.
8 : * You may obtain a copy of the License at
9 : *
10 : * http://www.apache.org/licenses/LICENSE-2.0
11 : *
12 : * Unless required by applicable law or agreed to in writing, software
13 : * distributed under the License is distributed on an "AS IS" BASIS,
14 : * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 : * See the License for the specific language governing permissions and
16 : * limitations under the License.
17 : */
18 :
19 : #pragma once
20 :
21 : #include <app-common/zap-generated/ids/Attributes.h>
22 : #include <app-common/zap-generated/ids/Clusters.h>
23 : #include <app/DeviceProxy.h>
24 : #include <app/ReadClient.h>
25 : #include <controller/AutoCommissioner.h>
26 : #include <controller/CHIPDeviceController.h>
27 : #include <credentials/jcm/TrustVerification.h>
28 : #include <lib/core/CHIPCallback.h>
29 : #include <lib/core/CHIPCore.h>
30 : #include <lib/core/CHIPError.h>
31 : #if CONFIG_DEVICE_LAYER
32 : #include <platform/CHIPDeviceLayer.h>
33 : #endif
34 :
35 : namespace chip {
36 :
37 : namespace Controller {
38 :
39 : namespace JCM {
40 :
41 : /*
42 : * AutoCommissioner is a class that handles the Joint Commissioning Management (JCM) process
43 : * for commissioning Joint Fabric Administrator devices in a CHIP network. It extends the AutoCommissioner class and
44 : * helps setup for the JCM trust verification process.
45 : */
46 : class AutoCommissioner : public chip::Controller::AutoCommissioner
47 : {
48 : public:
49 7 : AutoCommissioner(){};
50 7 : ~AutoCommissioner(){};
51 :
52 : CHIP_ERROR SetCommissioningParameters(const CommissioningParameters & params) override;
53 : void CleanupCommissioning() override;
54 :
55 : private:
56 : // Joint Fabric Management: all attributes
57 : const std::vector<app::AttributePathParams> mExtraReadPaths = {
58 : app::AttributePathParams(app::Clusters::JointFabricAdministrator::Id,
59 : app::Clusters::JointFabricAdministrator::Attributes::AdministratorFabricIndex::Id),
60 : app::AttributePathParams(kRootEndpointId, app::Clusters::OperationalCredentials::Id,
61 : app::Clusters::OperationalCredentials::Attributes::Fabrics::Id),
62 : app::AttributePathParams(kRootEndpointId, app::Clusters::OperationalCredentials::Id,
63 : app::Clusters::OperationalCredentials::Attributes::NOCs::Id),
64 : app::AttributePathParams(kRootEndpointId, app::Clusters::OperationalCredentials::Id,
65 : app::Clusters::OperationalCredentials::Attributes::TrustedRootCertificates::Id)
66 : };
67 : std::vector<app::AttributePathParams> mTempReadPaths;
68 : };
69 :
70 : } // namespace JCM
71 : } // namespace Controller
72 : } // namespace chip
|