Coverage Report

Created: 2026-11-12 07:31

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/connectedhomeip/zzz_generated/app-common/clusters/OperationalCredentials/Commands.h
Line
Count
Source
1
/*
2
 *
3
 *    Copyright (c) 2022 Project CHIP Authors
4
 *
5
 *    Licensed under the Apache License, Version 2.0 (the "License");
6
 *    you may not use this file except in compliance with the License.
7
 *    You may obtain a copy of the License at
8
 *
9
 *        http://www.apache.org/licenses/LICENSE-2.0
10
 *
11
 *    Unless required by applicable law or agreed to in writing, software
12
 *    distributed under the License is distributed on an "AS IS" BASIS,
13
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
 *    See the License for the specific language governing permissions and
15
 *    limitations under the License.
16
 */
17
18
// THIS FILE IS GENERATED BY ZAP
19
// This file is generated from clusters-Commands.h.zapt
20
21
#pragma once
22
23
#include <app/data-model/DecodableList.h>
24
#include <app/data-model/Encode.h>
25
#include <app/data-model/List.h>
26
#include <app/data-model/NullObject.h>
27
#include <app/data-model/Nullable.h>
28
#include <lib/core/DataModelTypes.h>
29
#include <lib/core/Optional.h>
30
#include <lib/core/TLV.h>
31
#include <lib/support/BitMask.h>
32
33
#include <clusters/shared/Enums.h>
34
#include <clusters/shared/Structs.h>
35
36
#include <clusters/OperationalCredentials/ClusterId.h>
37
#include <clusters/OperationalCredentials/CommandIds.h>
38
#include <clusters/OperationalCredentials/Enums.h>
39
#include <clusters/OperationalCredentials/Structs.h>
40
41
#include <cstdint>
42
43
namespace chip {
44
namespace app {
45
namespace Clusters {
46
namespace OperationalCredentials {
47
namespace Commands {
48
// Forward-declarations so we can reference these later.
49
50
namespace AttestationRequest {
51
struct Type;
52
struct DecodableType;
53
} // namespace AttestationRequest
54
55
namespace AttestationResponse {
56
struct Type;
57
struct DecodableType;
58
} // namespace AttestationResponse
59
60
namespace CertificateChainRequest {
61
struct Type;
62
struct DecodableType;
63
} // namespace CertificateChainRequest
64
65
namespace CertificateChainResponse {
66
struct Type;
67
struct DecodableType;
68
} // namespace CertificateChainResponse
69
70
namespace CSRRequest {
71
struct Type;
72
struct DecodableType;
73
} // namespace CSRRequest
74
75
namespace CSRResponse {
76
struct Type;
77
struct DecodableType;
78
} // namespace CSRResponse
79
80
namespace AddNOC {
81
struct Type;
82
struct DecodableType;
83
} // namespace AddNOC
84
85
namespace UpdateNOC {
86
struct Type;
87
struct DecodableType;
88
} // namespace UpdateNOC
89
90
namespace NOCResponse {
91
struct Type;
92
struct DecodableType;
93
} // namespace NOCResponse
94
95
namespace UpdateFabricLabel {
96
struct Type;
97
struct DecodableType;
98
} // namespace UpdateFabricLabel
99
100
namespace RemoveFabric {
101
struct Type;
102
struct DecodableType;
103
} // namespace RemoveFabric
104
105
namespace AddTrustedRootCertificate {
106
struct Type;
107
struct DecodableType;
108
} // namespace AddTrustedRootCertificate
109
110
namespace SetVIDVerificationStatement {
111
struct Type;
112
struct DecodableType;
113
} // namespace SetVIDVerificationStatement
114
115
namespace SignVIDVerificationRequest {
116
struct Type;
117
struct DecodableType;
118
} // namespace SignVIDVerificationRequest
119
120
namespace SignVIDVerificationResponse {
121
struct Type;
122
struct DecodableType;
123
} // namespace SignVIDVerificationResponse
124
125
} // namespace Commands
126
127
namespace Commands {
128
namespace AttestationRequest {
129
enum class Fields : uint8_t
130
{
131
    kAttestationNonce = 0,
132
};
133
134
struct Type
135
{
136
public:
137
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
138
0
    static constexpr CommandId GetCommandId() { return Commands::AttestationRequest::Id; }
139
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
140
141
    chip::ByteSpan attestationNonce;
142
143
    CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
144
145
    using ResponseType = Clusters::OperationalCredentials::Commands::AttestationResponse::DecodableType;
146
147
0
    static constexpr bool MustUseTimedInvoke() { return false; }
148
};
149
150
struct DecodableType
151
{
152
public:
153
0
    static constexpr CommandId GetCommandId() { return Commands::AttestationRequest::Id; }
154
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
155
    static constexpr bool kIsFabricScoped = false;
156
157
    chip::ByteSpan attestationNonce;
158
159
    CHIP_ERROR Decode(TLV::TLVReader & reader);
160
};
161
}; // namespace AttestationRequest
162
namespace AttestationResponse {
163
enum class Fields : uint8_t
164
{
165
    kAttestationElements  = 0,
166
    kAttestationSignature = 1,
167
};
168
169
struct Type
170
{
171
public:
172
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
173
0
    static constexpr CommandId GetCommandId() { return Commands::AttestationResponse::Id; }
174
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
175
176
    chip::ByteSpan attestationElements;
177
    chip::ByteSpan attestationSignature;
178
179
    CHIP_ERROR Encode(DataModel::FabricAwareTLVWriter & aWriter, TLV::Tag aTag) const;
180
181
    using ResponseType = DataModel::NullObjectType;
182
183
0
    static constexpr bool MustUseTimedInvoke() { return false; }
184
};
185
186
struct DecodableType
187
{
188
public:
189
0
    static constexpr CommandId GetCommandId() { return Commands::AttestationResponse::Id; }
190
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
191
192
    chip::ByteSpan attestationElements;
193
    chip::ByteSpan attestationSignature;
194
195
    CHIP_ERROR Decode(TLV::TLVReader & reader);
196
};
197
}; // namespace AttestationResponse
198
namespace CertificateChainRequest {
199
enum class Fields : uint8_t
200
{
201
    kCertificateType = 0,
202
    kCryptoProfile   = 1,
203
    kSegmentID       = 2,
204
    kMaxSegmentSize  = 3,
205
};
206
207
struct Type
208
{
209
public:
210
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
211
0
    static constexpr CommandId GetCommandId() { return Commands::CertificateChainRequest::Id; }
212
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
213
214
    CertificateChainTypeEnum certificateType = static_cast<CertificateChainTypeEnum>(0);
215
    Optional<Structs::CryptoProfileChainStruct::Type> cryptoProfile;
216
    Optional<uint16_t> segmentID;
217
    Optional<uint16_t> maxSegmentSize;
218
219
    CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
220
221
    using ResponseType = Clusters::OperationalCredentials::Commands::CertificateChainResponse::DecodableType;
222
223
0
    static constexpr bool MustUseTimedInvoke() { return false; }
224
};
225
226
struct DecodableType
227
{
228
public:
229
0
    static constexpr CommandId GetCommandId() { return Commands::CertificateChainRequest::Id; }
230
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
231
    static constexpr bool kIsFabricScoped = false;
232
233
    CertificateChainTypeEnum certificateType = static_cast<CertificateChainTypeEnum>(0);
234
    Optional<Structs::CryptoProfileChainStruct::DecodableType> cryptoProfile;
235
    Optional<uint16_t> segmentID;
236
    Optional<uint16_t> maxSegmentSize;
237
238
    CHIP_ERROR Decode(TLV::TLVReader & reader);
239
};
240
}; // namespace CertificateChainRequest
241
namespace CertificateChainResponse {
242
enum class Fields : uint8_t
243
{
244
    kCertificate       = 0,
245
    kTotalDocumentSize = 1,
246
    kNextSegmentID     = 2,
247
};
248
249
struct Type
250
{
251
public:
252
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
253
0
    static constexpr CommandId GetCommandId() { return Commands::CertificateChainResponse::Id; }
254
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
255
256
    chip::ByteSpan certificate;
257
    Optional<uint16_t> totalDocumentSize;
258
    Optional<uint16_t> nextSegmentID;
259
260
    CHIP_ERROR Encode(DataModel::FabricAwareTLVWriter & aWriter, TLV::Tag aTag) const;
261
262
    using ResponseType = DataModel::NullObjectType;
263
264
0
    static constexpr bool MustUseTimedInvoke() { return false; }
265
};
266
267
struct DecodableType
268
{
269
public:
270
0
    static constexpr CommandId GetCommandId() { return Commands::CertificateChainResponse::Id; }
271
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
272
273
    chip::ByteSpan certificate;
274
    Optional<uint16_t> totalDocumentSize;
275
    Optional<uint16_t> nextSegmentID;
276
277
    CHIP_ERROR Decode(TLV::TLVReader & reader);
278
};
279
}; // namespace CertificateChainResponse
280
namespace CSRRequest {
281
enum class Fields : uint8_t
282
{
283
    kCSRNonce       = 0,
284
    kIsForUpdateNOC = 1,
285
};
286
287
struct Type
288
{
289
public:
290
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
291
0
    static constexpr CommandId GetCommandId() { return Commands::CSRRequest::Id; }
292
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
293
294
    chip::ByteSpan CSRNonce;
295
    Optional<bool> isForUpdateNOC;
296
297
    CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
298
299
    using ResponseType = Clusters::OperationalCredentials::Commands::CSRResponse::DecodableType;
300
301
0
    static constexpr bool MustUseTimedInvoke() { return false; }
302
};
303
304
struct DecodableType
305
{
306
public:
307
0
    static constexpr CommandId GetCommandId() { return Commands::CSRRequest::Id; }
308
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
309
    static constexpr bool kIsFabricScoped = false;
310
311
    chip::ByteSpan CSRNonce;
312
    Optional<bool> isForUpdateNOC;
313
314
    CHIP_ERROR Decode(TLV::TLVReader & reader);
315
};
316
}; // namespace CSRRequest
317
namespace CSRResponse {
318
enum class Fields : uint8_t
319
{
320
    kNOCSRElements        = 0,
321
    kAttestationSignature = 1,
322
};
323
324
struct Type
325
{
326
public:
327
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
328
0
    static constexpr CommandId GetCommandId() { return Commands::CSRResponse::Id; }
329
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
330
331
    chip::ByteSpan NOCSRElements;
332
    chip::ByteSpan attestationSignature;
333
334
    CHIP_ERROR Encode(DataModel::FabricAwareTLVWriter & aWriter, TLV::Tag aTag) const;
335
336
    using ResponseType = DataModel::NullObjectType;
337
338
0
    static constexpr bool MustUseTimedInvoke() { return false; }
339
};
340
341
struct DecodableType
342
{
343
public:
344
0
    static constexpr CommandId GetCommandId() { return Commands::CSRResponse::Id; }
345
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
346
347
    chip::ByteSpan NOCSRElements;
348
    chip::ByteSpan attestationSignature;
349
350
    CHIP_ERROR Decode(TLV::TLVReader & reader);
351
};
352
}; // namespace CSRResponse
353
namespace AddNOC {
354
enum class Fields : uint8_t
355
{
356
    kNOCValue         = 0,
357
    kICACValue        = 1,
358
    kIPKValue         = 2,
359
    kCaseAdminSubject = 3,
360
    kAdminVendorId    = 4,
361
};
362
363
struct Type
364
{
365
public:
366
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
367
0
    static constexpr CommandId GetCommandId() { return Commands::AddNOC::Id; }
368
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
369
370
    chip::ByteSpan NOCValue;
371
    Optional<chip::ByteSpan> ICACValue;
372
    chip::ByteSpan IPKValue;
373
    uint64_t caseAdminSubject    = static_cast<uint64_t>(0);
374
    chip::VendorId adminVendorId = static_cast<chip::VendorId>(0);
375
376
    CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
377
378
    using ResponseType = Clusters::OperationalCredentials::Commands::NOCResponse::DecodableType;
379
380
0
    static constexpr bool MustUseTimedInvoke() { return false; }
381
};
382
383
struct DecodableType
384
{
385
public:
386
0
    static constexpr CommandId GetCommandId() { return Commands::AddNOC::Id; }
387
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
388
    static constexpr bool kIsFabricScoped = false;
389
390
    chip::ByteSpan NOCValue;
391
    Optional<chip::ByteSpan> ICACValue;
392
    chip::ByteSpan IPKValue;
393
    uint64_t caseAdminSubject    = static_cast<uint64_t>(0);
394
    chip::VendorId adminVendorId = static_cast<chip::VendorId>(0);
395
396
    CHIP_ERROR Decode(TLV::TLVReader & reader);
397
};
398
}; // namespace AddNOC
399
namespace UpdateNOC {
400
enum class Fields : uint8_t
401
{
402
    kNOCValue  = 0,
403
    kICACValue = 1,
404
};
405
406
struct Type
407
{
408
public:
409
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
410
0
    static constexpr CommandId GetCommandId() { return Commands::UpdateNOC::Id; }
411
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
412
413
    chip::ByteSpan NOCValue;
414
    Optional<chip::ByteSpan> ICACValue;
415
416
    CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
417
418
    using ResponseType = Clusters::OperationalCredentials::Commands::NOCResponse::DecodableType;
419
420
0
    static constexpr bool MustUseTimedInvoke() { return false; }
421
};
422
423
struct DecodableType
424
{
425
public:
426
0
    static constexpr CommandId GetCommandId() { return Commands::UpdateNOC::Id; }
427
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
428
    static constexpr bool kIsFabricScoped = true;
429
430
    chip::ByteSpan NOCValue;
431
    Optional<chip::ByteSpan> ICACValue;
432
433
    CHIP_ERROR Decode(TLV::TLVReader & reader, FabricIndex aAccessingFabricIndex);
434
};
435
}; // namespace UpdateNOC
436
namespace NOCResponse {
437
enum class Fields : uint8_t
438
{
439
    kStatusCode  = 0,
440
    kFabricIndex = 1,
441
    kDebugText   = 2,
442
};
443
444
struct Type
445
{
446
public:
447
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
448
0
    static constexpr CommandId GetCommandId() { return Commands::NOCResponse::Id; }
449
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
450
451
    NodeOperationalCertStatusEnum statusCode = static_cast<NodeOperationalCertStatusEnum>(0);
452
    Optional<chip::FabricIndex> fabricIndex;
453
    Optional<chip::CharSpan> debugText;
454
455
    CHIP_ERROR Encode(DataModel::FabricAwareTLVWriter & aWriter, TLV::Tag aTag) const;
456
457
    using ResponseType = DataModel::NullObjectType;
458
459
0
    static constexpr bool MustUseTimedInvoke() { return false; }
460
};
461
462
struct DecodableType
463
{
464
public:
465
0
    static constexpr CommandId GetCommandId() { return Commands::NOCResponse::Id; }
466
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
467
468
    NodeOperationalCertStatusEnum statusCode = static_cast<NodeOperationalCertStatusEnum>(0);
469
    Optional<chip::FabricIndex> fabricIndex;
470
    Optional<chip::CharSpan> debugText;
471
472
    CHIP_ERROR Decode(TLV::TLVReader & reader);
473
};
474
}; // namespace NOCResponse
475
namespace UpdateFabricLabel {
476
enum class Fields : uint8_t
477
{
478
    kLabel = 0,
479
};
480
481
struct Type
482
{
483
public:
484
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
485
0
    static constexpr CommandId GetCommandId() { return Commands::UpdateFabricLabel::Id; }
486
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
487
488
    chip::CharSpan label;
489
490
    CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
491
492
    using ResponseType = Clusters::OperationalCredentials::Commands::NOCResponse::DecodableType;
493
494
0
    static constexpr bool MustUseTimedInvoke() { return false; }
495
};
496
497
struct DecodableType
498
{
499
public:
500
0
    static constexpr CommandId GetCommandId() { return Commands::UpdateFabricLabel::Id; }
501
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
502
    static constexpr bool kIsFabricScoped = true;
503
504
    chip::CharSpan label;
505
506
    CHIP_ERROR Decode(TLV::TLVReader & reader, FabricIndex aAccessingFabricIndex);
507
};
508
}; // namespace UpdateFabricLabel
509
namespace RemoveFabric {
510
enum class Fields : uint8_t
511
{
512
    kFabricIndex = 0,
513
};
514
515
struct Type
516
{
517
public:
518
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
519
0
    static constexpr CommandId GetCommandId() { return Commands::RemoveFabric::Id; }
520
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
521
522
    chip::FabricIndex fabricIndex = static_cast<chip::FabricIndex>(0);
523
524
    CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
525
526
    using ResponseType = Clusters::OperationalCredentials::Commands::NOCResponse::DecodableType;
527
528
0
    static constexpr bool MustUseTimedInvoke() { return false; }
529
};
530
531
struct DecodableType
532
{
533
public:
534
0
    static constexpr CommandId GetCommandId() { return Commands::RemoveFabric::Id; }
535
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
536
    static constexpr bool kIsFabricScoped = false;
537
538
    chip::FabricIndex fabricIndex = static_cast<chip::FabricIndex>(0);
539
540
    CHIP_ERROR Decode(TLV::TLVReader & reader);
541
};
542
}; // namespace RemoveFabric
543
namespace AddTrustedRootCertificate {
544
enum class Fields : uint8_t
545
{
546
    kRootCACertificate = 0,
547
};
548
549
struct Type
550
{
551
public:
552
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
553
0
    static constexpr CommandId GetCommandId() { return Commands::AddTrustedRootCertificate::Id; }
554
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
555
556
    chip::ByteSpan rootCACertificate;
557
558
    CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
559
560
    using ResponseType = DataModel::NullObjectType;
561
562
0
    static constexpr bool MustUseTimedInvoke() { return false; }
563
};
564
565
struct DecodableType
566
{
567
public:
568
0
    static constexpr CommandId GetCommandId() { return Commands::AddTrustedRootCertificate::Id; }
569
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
570
    static constexpr bool kIsFabricScoped = false;
571
572
    chip::ByteSpan rootCACertificate;
573
574
    CHIP_ERROR Decode(TLV::TLVReader & reader);
575
};
576
}; // namespace AddTrustedRootCertificate
577
namespace SetVIDVerificationStatement {
578
enum class Fields : uint8_t
579
{
580
    kVendorID                 = 0,
581
    kVIDVerificationStatement = 1,
582
    kVvsc                     = 2,
583
};
584
585
struct Type
586
{
587
public:
588
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
589
0
    static constexpr CommandId GetCommandId() { return Commands::SetVIDVerificationStatement::Id; }
590
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
591
592
    Optional<chip::VendorId> vendorID;
593
    Optional<chip::ByteSpan> VIDVerificationStatement;
594
    Optional<chip::ByteSpan> vvsc;
595
596
    CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
597
598
    using ResponseType = DataModel::NullObjectType;
599
600
0
    static constexpr bool MustUseTimedInvoke() { return false; }
601
};
602
603
struct DecodableType
604
{
605
public:
606
0
    static constexpr CommandId GetCommandId() { return Commands::SetVIDVerificationStatement::Id; }
607
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
608
    static constexpr bool kIsFabricScoped = true;
609
610
    Optional<chip::VendorId> vendorID;
611
    Optional<chip::ByteSpan> VIDVerificationStatement;
612
    Optional<chip::ByteSpan> vvsc;
613
614
    CHIP_ERROR Decode(TLV::TLVReader & reader, FabricIndex aAccessingFabricIndex);
615
};
616
}; // namespace SetVIDVerificationStatement
617
namespace SignVIDVerificationRequest {
618
enum class Fields : uint8_t
619
{
620
    kFabricIndex     = 0,
621
    kClientChallenge = 1,
622
};
623
624
struct Type
625
{
626
public:
627
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
628
0
    static constexpr CommandId GetCommandId() { return Commands::SignVIDVerificationRequest::Id; }
629
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
630
631
    chip::FabricIndex fabricIndex = static_cast<chip::FabricIndex>(0);
632
    chip::ByteSpan clientChallenge;
633
634
    CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
635
636
    using ResponseType = Clusters::OperationalCredentials::Commands::SignVIDVerificationResponse::DecodableType;
637
638
0
    static constexpr bool MustUseTimedInvoke() { return false; }
639
};
640
641
struct DecodableType
642
{
643
public:
644
0
    static constexpr CommandId GetCommandId() { return Commands::SignVIDVerificationRequest::Id; }
645
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
646
    static constexpr bool kIsFabricScoped = false;
647
648
    chip::FabricIndex fabricIndex = static_cast<chip::FabricIndex>(0);
649
    chip::ByteSpan clientChallenge;
650
651
    CHIP_ERROR Decode(TLV::TLVReader & reader);
652
};
653
}; // namespace SignVIDVerificationRequest
654
namespace SignVIDVerificationResponse {
655
enum class Fields : uint8_t
656
{
657
    kFabricIndex          = 0,
658
    kFabricBindingVersion = 1,
659
    kSignature            = 2,
660
};
661
662
struct Type
663
{
664
public:
665
    // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
666
0
    static constexpr CommandId GetCommandId() { return Commands::SignVIDVerificationResponse::Id; }
667
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
668
669
    chip::FabricIndex fabricIndex = static_cast<chip::FabricIndex>(0);
670
    uint8_t fabricBindingVersion  = static_cast<uint8_t>(0);
671
    chip::ByteSpan signature;
672
673
    CHIP_ERROR Encode(DataModel::FabricAwareTLVWriter & aWriter, TLV::Tag aTag) const;
674
675
    using ResponseType = DataModel::NullObjectType;
676
677
0
    static constexpr bool MustUseTimedInvoke() { return false; }
678
};
679
680
struct DecodableType
681
{
682
public:
683
0
    static constexpr CommandId GetCommandId() { return Commands::SignVIDVerificationResponse::Id; }
684
0
    static constexpr ClusterId GetClusterId() { return Clusters::OperationalCredentials::Id; }
685
686
    chip::FabricIndex fabricIndex = static_cast<chip::FabricIndex>(0);
687
    uint8_t fabricBindingVersion  = static_cast<uint8_t>(0);
688
    chip::ByteSpan signature;
689
690
    CHIP_ERROR Decode(TLV::TLVReader & reader);
691
};
692
}; // namespace SignVIDVerificationResponse
693
} // namespace Commands
694
} // namespace OperationalCredentials
695
} // namespace Clusters
696
} // namespace app
697
} // namespace chip