1/** @addtogroup CMP
2 * Content Management Protocol Definitions.
3 *
4 * The CMP (Content Management Protocol) is based on the TCI (Trustlet Control
5 * Interface) and defines commands/responses between the content management
6 * trustlet (CMTL) and the content management trustlet connector (CMTLC) and/or
7 * the remote backend.
8 *
9 * @{
10 *
11 * @file
12 * CMP global definitions.
13 * Various components need access to (sub-)structures defined and used by CMP;
14 * these common definitions are made available through this header file.
15 *
16 * <!-- Copyright Giesecke & Devrient GmbH 2009-2012 -->
17 *
18 * Redistribution and use in source and binary forms, with or without
19 * modification, are permitted provided that the following conditions
20 * are met:
21 * 1. Redistributions of source code must retain the above copyright
22 *    notice, this list of conditions and the following disclaimer.
23 * 2. Redistributions in binary form must reproduce the above copyright
24 *    notice, this list of conditions and the following disclaimer in the
25 *    documentation and/or other materials provided with the distribution.
26 * 3. The name of the author may not be used to endorse or promote
27 *    products derived from this software without specific prior
28 *    written permission.
29 *
30 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
31 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
32 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
33 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
34 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
35 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
36 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
37 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
38 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
39 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
40 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41 */
42
43#ifndef CMP_H_
44#define CMP_H_
45
46#include "mcContainer.h"
47#include "mcUuid.h"
48#include "mcVersionInfo.h"
49#include "version.h"
50
51typedef uint32_t cmpCommandId_t;
52typedef uint32_t cmpResponseId_t;
53typedef uint32_t cmpReturnCode_t;
54
55/** Responses have bit 31 set */
56#define RSP_ID_MASK (1U << 31)
57#define RSP_ID(cmdId) (((uint32_t)(cmdId)) | RSP_ID_MASK)
58#define IS_CMD(cmdId) ((((uint32_t)(cmdId)) & RSP_ID_MASK) == 0)
59#define IS_RSP(cmdId) ((((uint32_t)(cmdId)) & RSP_ID_MASK) == RSP_ID_MASK)
60
61/**
62 * CMP command header.
63 */
64typedef struct {
65    /** Command ID. */
66    cmpCommandId_t commandId;
67} cmpCommandHeader_t;
68
69/**
70 * CMP response header.
71 */
72typedef struct{
73    /** Response ID (must be command ID | RSP_ID_MASK ). */
74    cmpResponseId_t     responseId;
75    /** Return code of command. */
76    cmpReturnCode_t     returnCode;
77} cmpResponseHeader_t;
78
79/** SHA256 checksum. */
80typedef struct {
81    uint8_t data[32];
82} cmpSha256_t;
83
84/** Key size of encryption algorithm used for secure messaging. */
85#define CMP_MSG_KEY_SIZE    32
86
87/** Block size of the encryption algorithm used for secure messaging. */
88#define CMP_MSG_CRYPTO_BLOCK_SIZE  16
89
90/** Total number of padding bytes required to encrypt data of given size. */
91#define CMP_ED_PADDING(netsize) (CMP_MSG_CRYPTO_BLOCK_SIZE - (netsize) % CMP_MSG_CRYPTO_BLOCK_SIZE)
92
93/** Total number of bytes used for message authentication code (MAC). */
94#define CMP_MAC_SIZE 32 // HMAC-SHA256
95
96/** Total number of bytes used for PSS signature in GENERATE AUTH TOKEN command. */
97#define CMP_GEN_AUTH_TOKEN_PSS_SIZE   256
98
99/** Message authentication code. */
100typedef struct {
101    uint8_t mac[CMP_MAC_SIZE];
102} cmpMac_t;
103
104/** 64-bit random number. */
105typedef struct {
106    uint8_t data[8];
107} cmpRnd8_t;
108
109/** 256-bit random number. */
110typedef struct {
111    uint8_t data[32];
112} cmpRnd32_t;
113
114/** Version tags. */
115typedef enum {
116    CMP_VERSION_TAG1 = 0x00000001, // Deprecated.
117    CMP_VERSION_TAG2 = 0x00000002,
118} cmpVersionTag_t;
119
120/** Version data for version tag 1. */
121typedef struct {
122    uint32_t number;
123} cmpVersionData1_t;
124
125/** Version data for version tag 2. */
126typedef struct {
127    mcVersionInfo_t versionInfo;
128} cmpVersionData2_t;
129
130/** Version data. */
131typedef union {
132    cmpVersionData1_t versionData1;
133    cmpVersionData2_t versionData2;
134} cmpVersionData_t;
135
136/** @defgroup MC_CMP_CMD_GET_VERSION
137* @{ */
138
139/** @defgroup MC_CMP_CMD_GET_VERSION_CMD Command
140* @{ */
141
142/** GetVersion command. */
143typedef struct {
144    cmpCommandHeader_t cmdHeader;
145} cmpCmdGetVersion_t;
146
147/** @} */
148
149/** @defgroup MC_CMP_CMD_GET_VERSION_RSP Response
150* @{ */
151
152/** GetSuid response. */
153typedef struct {
154cmpResponseHeader_t rspHeader;
155    cmpVersionTag_t tag;
156    cmpVersionData_t data;
157} cmpRspGetVersion_t;
158
159/** @} */
160
161/** @} */
162
163/** @defgroup MC_CMP_CMD_GENERATE_AUTH_TOKEN
164 * @{ */
165
166/** @defgroup MC_CMP_CMD_GENERATE_AUTH_TOKEN_CMD Command
167 * @{ */
168
169typedef struct {
170    cmpCommandHeader_t cmdHeader;
171    mcSuid_t suid;
172    mcSymmetricKey_t kSocAuth;
173    uint32_t kid;
174} cmpGenAuthTokenCmdSdata_t;
175
176typedef struct {
177    cmpGenAuthTokenCmdSdata_t sdata;
178    uint8_t pssSignature[CMP_GEN_AUTH_TOKEN_PSS_SIZE];
179} cmpGenAuthTokenCmd_t;
180
181/** GenAuthToken command. */
182typedef struct {
183    cmpGenAuthTokenCmd_t cmd;
184} cmpCmdGenAuthToken_t;
185
186/** @} */
187
188/** @defgroup MC_CMP_CMD_GENERATE_AUTH_TOKEN_RSP Response
189 * @{ */
190
191typedef struct {
192    cmpResponseHeader_t rspHeader;
193    // No MAC.
194} cmpGenAuthTokenRsp_t;
195
196/** GenAuthToken response. */
197typedef struct {
198    cmpGenAuthTokenRsp_t rsp;
199    mcSoAuthTokenCont_t soAuthCont;
200} cmpRspGenAuthToken_t;
201
202/** @} */
203
204/** @} */
205
206/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION
207 * @{ */
208
209/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION_CMD Command
210 * @{ */
211
212typedef struct {
213    cmpCommandHeader_t cmdHeader;
214} cmpBeginSocAuthenticationCmd_t;
215
216/** BeginSocAuthentication command. */
217typedef struct {
218    cmpBeginSocAuthenticationCmd_t cmd;
219    mcSoAuthTokenCont_t soAuthTokenCont;
220} cmpCmdBeginSocAuthentication_t;
221
222/** @} */
223
224/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION_RSP Response
225 * @{ */
226
227typedef struct {
228    cmpResponseHeader_t rspHeader;
229    mcSuid_t suid;
230    cmpRnd8_t rnd1;
231} cmpBeginSocAuthenticationRspSdata_t;
232
233typedef struct {
234    cmpBeginSocAuthenticationRspSdata_t sdata;
235    cmpMac_t mac;
236} cmpBeginSocAuthenticationRsp_t;
237
238/** BeginSocAuthentication response. */
239typedef struct {
240    cmpBeginSocAuthenticationRsp_t rsp;
241} cmpRspBeginSocAuthentication_t;
242
243/** @} */
244
245/** @} */
246
247/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION
248 * @{ */
249
250/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION_CMD Command
251 * @{ */
252
253typedef struct {
254    cmpCommandHeader_t cmdHeader;
255} cmpBeginRootAuthenticationCmd_t;
256
257/** BeginRootAuthentication command. */
258typedef struct {
259    cmpBeginRootAuthenticationCmd_t cmd;
260    mcSoRootCont_t soRootCont;
261} cmpCmdBeginRootAuthentication_t;
262
263/** @} */
264
265/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION_RSP Response
266 * @{ */
267
268typedef struct {
269    cmpResponseHeader_t rspHeader;
270    mcSuid_t suid;
271    cmpRnd8_t rnd1;
272} cmpBeginRootAuthenticationRspSdata_t;
273
274typedef struct {
275    cmpBeginRootAuthenticationRspSdata_t sdata;
276    cmpMac_t mac;
277} cmpBeginRootAuthenticationRsp_t;
278
279/** BeginRootAuthentication response. */
280typedef struct {
281    cmpBeginRootAuthenticationRsp_t rsp;
282} cmpRspBeginRootAuthentication_t;
283
284/** @} */
285
286/** @} */
287
288/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION
289 * @{ */
290
291/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION_CMD Command
292 * @{ */
293typedef struct {
294    cmpCommandHeader_t cmdHeader;
295    mcSpid_t spid;
296} cmpBeginSpAuthenticationCmdSdata_t;
297
298typedef struct {
299    cmpBeginSpAuthenticationCmdSdata_t sdata;
300} cmpBeginSpAuthenticationCmd_t;
301
302/** BeginSpAuthentication command. */
303typedef struct {
304    cmpBeginSpAuthenticationCmd_t cmd;
305    mcSoRootCont_t soRootCont;
306    mcSoSpCont_t soSpCont;
307} cmpCmdBeginSpAuthentication_t;
308
309/** @} */
310
311/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION_RSP Response
312 * @{ */
313typedef struct {
314    cmpResponseHeader_t rspHeader;
315    mcSuid_t suid;
316    mcSpid_t spid;
317    cmpRnd8_t rnd1;
318} cmpBeginSpAuthenticationRspSdata_t;
319
320typedef struct {
321    cmpBeginSpAuthenticationRspSdata_t sdata;
322    cmpMac_t mac;
323} cmpBeginSpAuthenticationRsp_t;
324
325/** BeginSpAuthentication response. */
326typedef struct {
327    cmpBeginSpAuthenticationRsp_t rsp;
328} cmpRspBeginSpAuthentication_t;
329
330/** @} */
331
332/** @} */
333
334/** @defgroup MC_CMP_CMD_AUTHENTICATE
335 * @{ */
336
337/** @defgroup MC_CMP_CMD_AUTHENTICATE_CMD Command
338 * @{ */
339typedef struct {
340    mcSuid_t suid;
341    uint32_t entityId;
342    cmpRnd8_t rnd2;
343    cmpRnd8_t rnd1;
344    cmpRnd32_t k2;
345} cmpAuthMsgEdata_t;
346
347typedef struct {
348    cmpAuthMsgEdata_t edata;
349    uint8_t padding[CMP_ED_PADDING(sizeof(cmpAuthMsgEdata_t))];
350} cmpAuthCmdEd_t;
351
352typedef struct {
353    cmpCommandHeader_t cmdHeader;
354    cmpAuthCmdEd_t ed;
355} cmpAuthCmdSdata_t;
356
357typedef struct {
358    cmpAuthCmdSdata_t sdata;
359    cmpMac_t mac;
360} cmpAuthenticateCmd_t;
361
362/** Authenticate command. */
363typedef struct {
364    cmpAuthenticateCmd_t cmd;
365} cmpCmdAuthenticate_t;
366
367/** @} */
368
369/** @defgroup MC_CMP_CMD_AUTHENTICATE_RSP Response
370 * @{ */
371typedef struct {
372    mcSuid_t suid;
373    uint32_t entityId;
374    cmpRnd8_t rnd1;
375    cmpRnd8_t rnd2;
376    cmpRnd32_t k1;
377} cmpAuthRspEdata_t;
378
379typedef struct {
380    cmpAuthRspEdata_t edata;
381    uint8_t padding[CMP_ED_PADDING(sizeof(cmpAuthRspEdata_t))];
382} cmpAuthRspEd_t;
383
384typedef struct {
385    cmpResponseHeader_t rspHeader;
386    cmpAuthRspEd_t ed;
387} cmpAuthRspSdata_t;
388
389typedef struct {
390    cmpAuthRspSdata_t sdata;
391    cmpMac_t mac;
392} cmpAuthenticateRsp_t;
393
394/** Authenticate response. */
395typedef struct {
396    cmpAuthenticateRsp_t rsp;
397} cmpRspAuthenticate_t;
398
399/** @} */
400
401/** @} */
402
403/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE
404 * @{ */
405
406/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE_CMD Command
407 * @{ */
408
409typedef struct {
410    mcSymmetricKey_t kRootAuth;
411} cmpRootRegActMsgEdata_t;
412
413typedef struct {
414    cmpRootRegActMsgEdata_t edata;
415    uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootRegActMsgEdata_t))];
416} cmpRootRegActCmdEd_t;
417
418typedef struct {
419    cmpCommandHeader_t cmdHeader;
420    mcRootid_t rootid;
421    cmpRootRegActCmdEd_t ed;
422} cmpRootRegActCmdSdata_t;
423
424typedef struct {
425    cmpRootRegActCmdSdata_t sdata;
426    cmpMac_t mac;
427} cmpRootContRegisterActivateCmd_t;
428
429/** RootContRegisterActivate command. */
430typedef struct {
431    cmpRootContRegisterActivateCmd_t cmd;
432} cmpCmdRootContRegisterActivate_t;
433
434/** @} */
435
436/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE_RSP Response
437 * @{ */
438
439typedef struct {
440    mcSoRootCont_t soRootCont;
441} cmpRootRegActRspEdata_t;
442
443typedef struct {
444    cmpRootRegActRspEdata_t edata;
445    uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootRegActRspEdata_t))];
446} cmpRootRegActRspEd_t;
447
448typedef struct {
449    cmpResponseHeader_t rspHeader;
450    cmpRootRegActRspEd_t ed;
451} cmpRootRegActRspSdata_t;
452
453typedef struct {
454    cmpRootRegActRspSdata_t sdata;
455    cmpMac_t mac;
456} cmpRootContRegisterActivateRsp_t;
457
458/** RooContRegisterActivate response. */
459typedef struct {
460    cmpRootContRegisterActivateRsp_t rsp;
461    mcSoRootCont_t soRootCont;
462} cmpRspRootContRegisterActivate_t;
463
464/** @} */
465
466/** @} */
467
468/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER
469 * @{ */
470
471/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER_CMD Command
472 * @{ */
473
474typedef struct {
475    mcSuid_t suid;
476    mcSoAuthTokenCont_t soAuthTokenCont;
477} cmpRootUnregMsgEdata_t;
478
479typedef struct {
480    cmpRootUnregMsgEdata_t edata;
481    uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootUnregMsgEdata_t))];
482} cmpRootUnregCmdEd_t;
483
484typedef struct {
485    cmpCommandHeader_t cmdHeader;
486    cmpRootUnregCmdEd_t ed;
487} cmpRootUnregCmdSdata_t;
488
489typedef struct {
490    cmpRootUnregCmdSdata_t sdata;
491    cmpMac_t mac;
492} cmpRootContUnregisterCmd_t;
493
494/** RootContUnregister command. */
495typedef struct {
496    cmpRootContUnregisterCmd_t cmd;
497} cmpCmdRootContUnregister_t;
498
499/** @} */
500
501/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER_RSP Response
502 * @{ */
503
504typedef struct {
505    mcSuid_t suid;
506} cmpRootUnregRspEdata_t;
507
508typedef struct {
509    cmpRootUnregRspEdata_t edata;
510    uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootUnregRspEdata_t))];
511} cmpRootUnregRspEd_t;
512
513typedef struct {
514    cmpResponseHeader_t rspHeader;
515    cmpRootUnregRspEd_t ed;
516} cmpRootUnregRspSdata_t;
517
518typedef struct {
519    cmpRootUnregRspSdata_t sdata;
520    cmpMac_t mac;
521} cmpRootContUnregisterRsp_t;
522
523/** RootContUnregister response. */
524typedef struct {
525    cmpRootContUnregisterRsp_t rsp;
526    mcSoAuthTokenCont_t soAuthTokenCont;
527} cmpRspRootContUnregister_t;
528
529/** @} */
530
531/** @} */
532
533/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT
534 * @{ */
535
536/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT_CMD Command
537 * @{ */
538
539typedef struct {
540    cmpCommandHeader_t cmdHeader;
541} cmpRootLockByRootCmdSdata_t;
542
543typedef struct {
544    cmpRootLockByRootCmdSdata_t sdata;
545    cmpMac_t mac;
546} cmpRootContLockByRootCmd_t;
547
548/** RootContLockByRoot command. */
549typedef struct {
550    cmpRootContLockByRootCmd_t cmd;
551} cmpCmdRootContLockByRoot_t;
552
553/** @} */
554
555/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT_RSP Response
556 * @{ */
557
558typedef struct {
559    mcSoRootCont_t soRootCont;
560} cmpRootLockByRootRspEdata_t;
561
562typedef struct {
563    cmpRootLockByRootRspEdata_t edata;
564    uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootLockByRootRspEdata_t))];
565} cmpRootLockByRootRspEd_t;
566
567typedef struct {
568    cmpResponseHeader_t rspHeader;
569    cmpRootLockByRootRspEd_t ed;
570} cmpRootLockByRootRspSdata_t;
571
572typedef struct {
573    cmpRootLockByRootRspSdata_t sdata;
574    cmpMac_t mac;
575} cmpRootContLockByRootRsp_t;
576
577/** RootContLockByRoot response. */
578typedef struct {
579    cmpRootContLockByRootRsp_t rsp;
580    mcSoRootCont_t soRootCont;
581} cmpRspRootContLockByRoot_t;
582
583/** @} */
584
585/** @} */
586
587/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT
588 * @{ */
589
590/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT_CMD Command
591 * @{ */
592
593typedef struct {
594    cmpCommandHeader_t cmdHeader;
595} cmpRootUnlockByRootCmdSdata_t;
596
597typedef struct {
598    cmpRootUnlockByRootCmdSdata_t sdata;
599    cmpMac_t mac;
600} cmpRootContUnlockByRootCmd_t;
601
602/** RootContUnlockByRoot command. */
603typedef struct {
604    cmpRootContUnlockByRootCmd_t cmd;
605} cmpCmdRootContUnlockByRoot_t;
606
607/** @} */
608
609/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT_RSP Response
610 * @{ */
611
612typedef struct {
613    mcSoRootCont_t soRootCont;
614} cmpRootUnlockByRootRspEdata_t;
615
616typedef struct {
617    cmpRootUnlockByRootRspEdata_t edata;
618    uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootUnlockByRootRspEdata_t))];
619} cmpRootUnlockByRootRspEd_t;
620
621typedef struct {
622    cmpResponseHeader_t rspHeader;
623    cmpRootUnlockByRootRspEd_t ed;
624} cmpRootUnlockByRootRspSdata_t;
625
626typedef struct {
627    cmpRootUnlockByRootRspSdata_t sdata;
628    cmpMac_t mac;
629} cmpRootContUnlockByRootRsp_t;
630
631/** RootContUnlockByRoot response. */
632typedef struct {
633    cmpRootContUnlockByRootRsp_t rsp;
634    mcSoRootCont_t soRootCont;
635} cmpRspRootContUnlockByRoot_t;
636
637/** @} */
638
639/** @} */
640
641/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE
642 * @{ */
643
644/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE_CMD Command
645 * @{ */
646
647typedef struct {
648    mcSymmetricKey_t kSpAuth;
649} cmpSpRegActMsgEdata_t;
650
651typedef struct {
652    cmpSpRegActMsgEdata_t edata;
653    uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegActMsgEdata_t))];
654} cmpSpRegActCmdEd_t;
655
656typedef struct {
657    cmpCommandHeader_t cmdHeader;
658    mcSpid_t spid;
659    cmpSpRegActCmdEd_t ed;
660} cmpSpRegActCmdSdata_t;
661
662typedef struct {
663    cmpSpRegActCmdSdata_t sdata;
664    cmpMac_t mac;
665} cmpSpContRegisterActivateCmd_t;
666
667/** SpContRegisterActivate command. */
668typedef struct {
669    cmpSpContRegisterActivateCmd_t cmd;
670} cmpCmdSpContRegisterActivate_t;
671
672/** @} */
673
674/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE_RSP Response
675 * @{ */
676
677typedef struct {
678    mcSoRootCont_t soRootCont;
679    mcSoSpCont_t soSpCont;
680} cmpSpRegActRspEdata_t;
681
682typedef struct {
683    cmpSpRegActRspEdata_t edata;
684    uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegActRspEdata_t))];
685} cmpSpRegActRspEd_t;
686
687typedef struct {
688    cmpResponseHeader_t rspHeader;
689    cmpSpRegActRspEd_t ed;
690} cmpSpRegActRspSdata_t;
691
692typedef struct {
693    cmpSpRegActRspSdata_t sdata;
694    cmpMac_t mac;
695} cmpSpContRegisterActivateRsp_t;
696
697/** SpContRegisterActivate response. */
698typedef struct {
699    cmpSpContRegisterActivateRsp_t rsp;
700    mcSoRootCont_t soRootCont;
701    mcSoSpCont_t soSpCont;
702} cmpRspSpContRegisterActivate_t;
703
704/** @} */
705
706/** @} */
707
708/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER
709 * @{ */
710
711/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_CMD Command
712 * @{ */
713
714typedef struct {
715    mcSymmetricKey_t kSpAuth;
716} cmpSpRegisterMsgEdata_t;
717
718typedef struct {
719    cmpSpRegisterMsgEdata_t edata;
720    uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegisterMsgEdata_t))];
721} cmpSpRegisterCmdEd_t;
722
723typedef struct {
724    cmpCommandHeader_t cmdHeader;
725    mcSpid_t spid;
726    cmpSpRegisterCmdEd_t ed;
727} cmpSpRegisterCmdSdata_t;
728
729typedef struct {
730    cmpSpRegisterCmdSdata_t sdata;
731    cmpMac_t mac;
732} cmpSpContRegisterCmd_t;
733
734/** SpContRegister command. */
735typedef struct {
736    cmpSpContRegisterCmd_t cmd;
737} cmpCmdSpContRegister_t;
738
739/** @} */
740
741/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_RSP Response
742 * @{ */
743
744typedef struct {
745    mcSoRootCont_t soRootCont;
746    mcSoSpCont_t soSpCont;
747} cmpSpRegisterRspEdata_t;
748
749typedef struct {
750    cmpSpRegisterRspEdata_t edata;
751    uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegisterRspEdata_t))];
752} cmpSpRegisterRspEd_t;
753
754typedef struct {
755    cmpResponseHeader_t rspHeader;
756    cmpSpRegisterRspEd_t ed;
757} cmpSpRegisterRspSdata_t;
758
759typedef struct {
760    cmpSpRegisterRspSdata_t sdata;
761    cmpMac_t mac;
762} cmpSpContRegisterRsp_t;
763
764/** SpContRegister response. */
765typedef struct {
766    cmpSpContRegisterRsp_t rsp;
767    mcSoRootCont_t soRootCont;
768    mcSoSpCont_t soSpCont;
769} cmpRspSpContRegister_t;
770
771/** @} */
772
773/** @} */
774
775/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE
776 * @{ */
777
778/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE_CMD Command
779 * @{ */
780
781typedef struct {
782    mcSymmetricKey_t kSpAuth;
783} cmpSpActivateMsgEdata_t;
784
785typedef struct {
786    cmpSpActivateMsgEdata_t edata;
787    uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpActivateMsgEdata_t))];
788} cmpSpActivateCmdEd_t;
789
790typedef struct {
791    cmpCommandHeader_t cmdHeader;
792    mcSpid_t spid;
793    cmpSpActivateCmdEd_t ed;
794} cmpSpActivateCmdSdata_t;
795
796typedef struct {
797    cmpSpActivateCmdSdata_t sdata;
798    cmpMac_t mac;
799} cmpSpContActivateCmd_t;
800
801/** SpContActivate command. */
802typedef struct {
803    cmpSpContActivateCmd_t cmd;
804} cmpCmdSpContActivate_t;
805
806/** @} */
807
808/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE_RSP Response
809 * @{ */
810
811typedef struct {
812    mcSoSpCont_t soSpCont;
813} cmpSpActivateRspEdata_t;
814
815typedef struct {
816    cmpSpActivateRspEdata_t edata;
817    uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpActivateRspEdata_t))];
818} cmpSpActivateRspEd_t;
819
820typedef struct {
821    cmpResponseHeader_t rspHeader;
822    cmpSpActivateRspEd_t ed;
823} cmpSpActivateRspSdata_t;
824
825typedef struct {
826    cmpSpActivateRspSdata_t sdata;
827    cmpMac_t mac;
828} cmpSpContActivateRsp_t;
829
830/** SpContActivate response. */
831typedef struct {
832    cmpSpContActivateRsp_t rsp;
833    mcSoSpCont_t soSpCont;
834} cmpRspSpContActivate_t;
835
836/** @} */
837
838/** @} */
839
840/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER
841 * @{ */
842
843/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER_CMD Command
844 * @{ */
845
846typedef struct {
847    cmpCommandHeader_t cmdHeader;
848    mcSpid_t spid;
849} cmpSpContUnregCmdSdata_t;
850
851typedef struct {
852    cmpSpContUnregCmdSdata_t sdata;
853    cmpMac_t mac;
854} cmpSpContUnregisterCmd_t;
855
856/** SpContUnregister command. */
857typedef struct {
858    cmpSpContUnregisterCmd_t cmd;
859} cmpCmdSpContUnregister_t;
860
861/** @} */
862
863/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER_RSP Response
864 * @{ */
865
866typedef struct {
867    mcSoRootCont_t soRootCont;
868} cmpSpUnregRspEdata_t;
869
870typedef struct {
871    cmpSpUnregRspEdata_t edata;
872    uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpUnregRspEdata_t))];
873} cmpSpUnregRspEd_t;
874
875typedef struct {
876    cmpResponseHeader_t rspHeader;
877    cmpSpUnregRspEd_t ed;
878} cmpSpContUnregRspSdata_t;
879
880typedef struct {
881    cmpSpContUnregRspSdata_t sdata;
882    cmpMac_t mac;
883} cmpSpContUnregisterRsp_t;
884
885/** SpContUnregister response. */
886typedef struct {
887    cmpSpContUnregisterRsp_t rsp;
888    mcSoRootCont_t soRootCont;
889} cmpRspSpContUnregister_t;
890
891/** @} */
892
893/** @} */
894
895/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT
896 * @{ */
897
898/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT_CMD Command
899 * @{ */
900
901typedef struct {
902    cmpCommandHeader_t cmdHeader;
903    mcSpid_t spid;
904} cmpSpLockByRootCmdSdata_t;
905
906typedef struct {
907    cmpSpLockByRootCmdSdata_t sdata;
908    cmpMac_t mac;
909} cmpSpContLockByRootCmd_t;
910
911/** SpContLockByRoot command. */
912typedef struct {
913    cmpSpContLockByRootCmd_t cmd;
914    mcSoSpCont_t soSpCont;
915} cmpCmdSpContLockByRoot_t;
916
917/** @} */
918
919/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT_RSP Response
920 * @{ */
921
922typedef struct {
923    mcSoSpCont_t soSpCont;
924} cmpSpLockByRootRspEdata_t;
925
926typedef struct {
927    cmpSpLockByRootRspEdata_t edata;
928    uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpLockByRootRspEdata_t))];
929} cmpSpLockByRootRspEd_t;
930
931typedef struct {
932    cmpResponseHeader_t rspHeader;
933    cmpSpLockByRootRspEd_t ed;
934} cmpSpLockByRootRspSdata_t;
935
936typedef struct {
937    cmpSpLockByRootRspSdata_t sdata;
938    cmpMac_t mac;
939} cmpSpContLockByRootRsp_t;
940
941/** SpContLockByRoot response. */
942typedef struct {
943    cmpSpContLockByRootRsp_t rsp;
944    mcSoSpCont_t soSpCont;
945} cmpRspSpContLockByRoot_t;
946
947/** @} */
948
949/** @} */
950
951/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT
952 * @{ */
953
954/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT_CMD Command
955 * @{ */
956
957typedef struct {
958    cmpCommandHeader_t cmdHeader;
959    mcSpid_t spid;
960} cmpSpUnlockByRootCmdSdata_t;
961
962typedef struct {
963    cmpSpUnlockByRootCmdSdata_t sdata;
964    cmpMac_t mac;
965} cmpSpContUnlockByRootCmd_t;
966
967/** SpContUnlockByRoot command. */
968typedef struct {
969    cmpSpContUnlockByRootCmd_t cmd;
970    mcSoSpCont_t soSpCont;
971} cmpCmdSpContUnlockByRoot_t;
972
973/** @} */
974
975/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT_RSP Response
976 * @{ */
977
978typedef struct {
979    mcSoSpCont_t soSpCont;
980} cmpSpUnlockByRootRspEdata_t;
981
982typedef struct {
983    cmpSpUnlockByRootRspEdata_t edata;
984    uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpUnlockByRootRspEdata_t))];
985} cmpSpUnlockByRootRspEd_t;
986
987typedef struct {
988    cmpResponseHeader_t rspHeader;
989    cmpSpUnlockByRootRspEd_t ed;
990} cmpSpUnlockByRootRspSdata_t;
991
992typedef struct {
993    cmpSpUnlockByRootRspSdata_t sdata;
994    cmpMac_t mac;
995} cmpSpContUnlockByRootRsp_t;
996
997/** SpContUnlockByRoot response. */
998typedef struct {
999    cmpSpContUnlockByRootRsp_t rsp;
1000    mcSoSpCont_t soSpCont;
1001} cmpRspSpContUnlockByRoot_t;
1002
1003/** @} */
1004
1005/** @} */
1006
1007/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP
1008 * @{ */
1009
1010/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP_CMD Command
1011 * @{ */
1012
1013typedef struct {
1014    cmpCommandHeader_t cmdHeader;
1015    mcSpid_t spid;
1016} cmpSpLockBySpCmdSdata_t;
1017
1018typedef struct {
1019    cmpSpLockBySpCmdSdata_t sdata;
1020    cmpMac_t mac;
1021} cmpSpContLockBySpCmd_t;
1022
1023/** SpContLockBySp command. */
1024typedef struct {
1025    cmpSpContLockBySpCmd_t cmd;
1026} cmpCmdSpContLockBySp_t;
1027
1028/** @} */
1029
1030/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP_RSP Respose
1031 * @{ */
1032
1033typedef struct {
1034    mcSoSpCont_t soSpCont;
1035} cmpSpLockBySpRspEdata_t;
1036
1037typedef struct {
1038    cmpSpLockBySpRspEdata_t edata;
1039    uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpLockBySpRspEdata_t))];
1040} cmpSpLockBySpRspEd_t;
1041
1042typedef struct {
1043    cmpResponseHeader_t rspHeader;
1044    cmpSpLockBySpRspEd_t ed;
1045} cmpSpLockBySpRspSdata_t;
1046
1047typedef struct {
1048    cmpSpLockBySpRspSdata_t sdata;
1049    cmpMac_t mac;
1050} cmpSpContLockBySpRsp_t;
1051
1052/** SpContLockBySp response. */
1053typedef struct {
1054    cmpSpContLockBySpRsp_t rsp;
1055    mcSoSpCont_t soSpCont;
1056} cmpRspSpContLockBySp_t;
1057
1058/** @} */
1059
1060/** @} */
1061
1062/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP
1063 * @{ */
1064
1065/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP_CMD Command
1066 * @{ */
1067
1068typedef struct {
1069    cmpCommandHeader_t cmdHeader;
1070    mcSpid_t spid;
1071} cmpSpUnlockBySpCmdSdata_t;
1072
1073typedef struct {
1074    cmpSpUnlockBySpCmdSdata_t sdata;
1075    cmpMac_t mac;
1076} cmpSpContUnlockBySpCmd_t;
1077
1078/** SpContUnlockBySp command. */
1079typedef struct {
1080    cmpSpContUnlockBySpCmd_t cmd;
1081} cmpCmdSpContUnlockBySp_t;
1082
1083/** @} */
1084
1085/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP_RSP Response
1086 * @{ */
1087
1088typedef struct {
1089    mcSoSpCont_t soSpCont;
1090} cmpSpUnlockBySpRspEdata_t;
1091
1092typedef struct {
1093    cmpSpUnlockBySpRspEdata_t edata;
1094    uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpUnlockBySpRspEdata_t))];
1095} cmpSpUnlockBySpRspEd_t;
1096
1097typedef struct {
1098    cmpResponseHeader_t rspHeader;
1099    cmpSpUnlockBySpRspEd_t ed;
1100} cmpSpUnlockBySpRspSdata_t;
1101
1102typedef struct {
1103    cmpSpUnlockBySpRspSdata_t sdata;
1104    cmpMac_t mac;
1105} cmpSpContUnlockBySpRsp_t;
1106
1107/** SpContUnlockBySp response. */
1108typedef struct {
1109    cmpSpContUnlockBySpRsp_t rsp;
1110    mcSoSpCont_t soSpCont;
1111} cmpRspSpContUnlockBySp_t;
1112
1113/** @} */
1114
1115/** @} */
1116
1117/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER
1118 * @{ */
1119
1120/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_CMD Command
1121 * @{ */
1122
1123typedef struct {
1124    mcSymmetricKey_t kSpTltEnc;
1125} cmpTltRegMsgEdata_t;
1126
1127typedef struct {
1128    cmpTltRegMsgEdata_t edata;
1129    uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegMsgEdata_t))];
1130} cmpTltRegCmdEd_t;
1131
1132typedef struct {
1133    cmpCommandHeader_t cmdHeader;
1134    mcSpid_t spid;
1135    mcUuid_t uuid;
1136    cmpTltRegCmdEd_t ed;
1137} cmpTltRegCmdSdata_t;
1138
1139typedef struct {
1140    cmpTltRegCmdSdata_t sdata;
1141    cmpMac_t mac;
1142} cmpTltContRegisterCmd_t;
1143
1144/** TltContRegister command. */
1145typedef struct {
1146    cmpTltContRegisterCmd_t cmd;
1147} cmpCmdTltContRegister_t;
1148
1149/** @} */
1150
1151/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_RSP Response
1152 * @{ */
1153
1154typedef struct {
1155    mcSoSpCont_t soSpCont;
1156    mcSoTltCont_t soTltCont;
1157} cmpTltRegRspEdata_t;
1158
1159typedef struct {
1160    cmpTltRegRspEdata_t edata;
1161    uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegRspEdata_t))];
1162} cmpTltRegRspEd_t;
1163
1164typedef struct {
1165    cmpResponseHeader_t rspHeader;
1166    cmpTltRegRspEd_t ed;
1167} cmpTltRegRspSdata_t;
1168
1169typedef struct {
1170    cmpTltRegRspSdata_t sdata;
1171    cmpMac_t mac;
1172} cmpTltContRegisterRsp_t;
1173
1174/** TltContRegister response. */
1175typedef struct {
1176    cmpTltContRegisterRsp_t rsp;
1177    mcSoSpCont_t soSpCont;
1178    mcSoTltCont_t soTltCont;
1179} cmpRspTltContRegister_t;
1180
1181/** @} */
1182
1183/** @} */
1184
1185/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE
1186 * @{ */
1187
1188/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE_CMD Command
1189 * @{ */
1190
1191typedef struct {
1192    cmpCommandHeader_t cmdHeader;
1193    mcSpid_t spid;
1194    mcUuid_t uuid;
1195} cmpTltActCmdSdata_t;
1196
1197typedef struct {
1198    cmpTltActCmdSdata_t sdata;
1199    cmpMac_t mac;
1200} cmpTltContActivateCmd_t;
1201
1202/** TltContActivate command. */
1203typedef struct {
1204    cmpTltContActivateCmd_t cmd;
1205    mcSoTltCont_t soTltCont;
1206} cmpCmdTltContActivate_t;
1207
1208/** @} */
1209
1210/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE_RSP Response
1211 * @{ */
1212
1213typedef struct {
1214    mcSoTltCont_t soTltCont;
1215} cmpTltActRspEdata_t;
1216
1217typedef struct {
1218    cmpTltActRspEdata_t edata;
1219    uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltActRspEdata_t))];
1220} cmpTltActRspEd_t;
1221
1222typedef struct {
1223    cmpResponseHeader_t rspHeader;
1224    cmpTltActRspEd_t ed;
1225} cmpTltActRspSdata_t;
1226
1227typedef struct {
1228    cmpTltActRspSdata_t sdata;
1229    cmpMac_t mac;
1230} cmpTltContActivateRsp_t;
1231
1232/** TltContActivate response. */
1233typedef struct {
1234    cmpTltContActivateRsp_t rsp;
1235    mcSoTltCont_t soTltCont;
1236} cmpRspTltContActivate_t;
1237
1238/** @} */
1239
1240/** @} */
1241
1242/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE
1243 * @{ */
1244
1245/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE_CMD Command
1246 * @{ */
1247
1248typedef struct {
1249    mcSymmetricKey_t kSpTltEnc;
1250} cmpTltRegActMsgEdata_t;
1251
1252typedef struct {
1253    cmpTltRegActMsgEdata_t edata;
1254    uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegActMsgEdata_t))];
1255} cmpTltRegActCmdEd_t;
1256
1257typedef struct {
1258    cmpCommandHeader_t cmdHeader;
1259    mcSpid_t spid;
1260    mcUuid_t uuid;
1261    cmpTltRegActCmdEd_t ed;
1262} cmpTltRegActCmdSdata_t;
1263
1264typedef struct {
1265    cmpTltRegActCmdSdata_t sdata;
1266    cmpMac_t mac;
1267} cmpTltContRegisterActivateCmd_t;
1268
1269/** TltContRegisterActivate command. */
1270typedef struct {
1271    cmpTltContRegisterActivateCmd_t cmd;
1272} cmpCmdTltContRegisterActivate_t;
1273
1274/** @} */
1275
1276/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE_RSP Response
1277 * @{ */
1278
1279typedef struct {
1280    mcSoSpCont_t soSpCont;
1281    mcSoTltCont_t soTltCont;
1282} cmpTltRegActRspEdata_t;
1283
1284typedef struct {
1285    cmpTltRegActRspEdata_t edata;
1286    uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegActRspEdata_t))];
1287} cmpTltRegActRspEd_t;
1288
1289typedef struct {
1290    cmpResponseHeader_t rspHeader;
1291    cmpTltRegActRspEd_t ed;
1292} cmpTltRegActRspSdata_t;
1293
1294typedef struct {
1295    cmpTltRegActRspSdata_t sdata;
1296    cmpMac_t mac;
1297} cmpTltContRegisterActivateRsp_t;
1298
1299/** TltContRegisterActivate response. */
1300typedef struct {
1301    cmpTltContRegisterActivateRsp_t rsp;
1302    mcSoSpCont_t soSpCont;
1303    mcSoTltCont_t soTltCont;
1304} cmpRspTltContRegisterActivate_t;
1305
1306/** @} */
1307
1308/** @} */
1309
1310/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER
1311 * @{ */
1312
1313/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER_CMD Command
1314 * @{ */
1315
1316typedef struct {
1317    cmpCommandHeader_t cmdHeader;
1318    mcSpid_t spid;
1319    mcUuid_t uuid;
1320} cmpTltUnregCmdSdata_t;
1321
1322typedef struct {
1323    cmpTltUnregCmdSdata_t sdata;
1324    cmpMac_t mac;
1325} cmpTltContUnregisterCmd_t;
1326
1327/** TltContUnregister command. */
1328typedef struct {
1329    cmpTltContUnregisterCmd_t cmd;
1330} cmpCmdTltContUnregister_t;
1331
1332/** @} */
1333
1334/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER_RSP Response
1335 * @{ */
1336
1337typedef struct {
1338    mcSoSpCont_t soSpCont;
1339} cmpTltUnregRspEdata_t;
1340
1341typedef struct {
1342    cmpTltUnregRspEdata_t edata;
1343    uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltUnregRspEdata_t))];
1344} cmpTltUnregRspEd_t;
1345
1346typedef struct {
1347    cmpResponseHeader_t rspHeader;
1348    cmpTltUnregRspEd_t ed;
1349} cmpTltUnregRspSdata_t;
1350
1351typedef struct {
1352    cmpTltUnregRspSdata_t sdata;
1353    cmpMac_t mac;
1354} cmpTltContUnregisterRsp_t;
1355
1356/** TltContUnregister response. */
1357typedef struct {
1358    cmpTltContUnregisterRsp_t rsp;
1359    mcSoSpCont_t soSpCont;
1360} cmpRspTltContUnregister_t;
1361
1362/** @} */
1363
1364/** @} */
1365
1366/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP
1367 * @{ */
1368
1369/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP_CMD Command
1370 * @{ */
1371
1372typedef struct {
1373    cmpCommandHeader_t cmdHeader;
1374    mcSpid_t spid;
1375    mcUuid_t uuid;
1376} cmpTltLockBySpCmdSdata_t;
1377
1378typedef struct {
1379    cmpTltLockBySpCmdSdata_t sdata;
1380    cmpMac_t mac;
1381} cmpTltContLockBySpCmd_t;
1382
1383/** TltContLockBySp command. */
1384typedef struct {
1385    cmpTltContLockBySpCmd_t cmd;
1386    mcSoTltCont_t soTltCont;
1387} cmpCmdTltContLockBySp_t;
1388
1389/** @} */
1390
1391/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP_RSP Response
1392 * @{ */
1393
1394typedef struct {
1395    mcSoTltCont_t soTltCont;
1396} cmpTltLockBySpRspEdata_t;
1397
1398typedef struct {
1399    cmpTltLockBySpRspEdata_t edata;
1400    uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltLockBySpRspEdata_t))];
1401} cmpTltLockBySpRspEd_t;
1402
1403typedef struct {
1404    cmpResponseHeader_t rspHeader;
1405    cmpTltLockBySpRspEd_t ed;
1406} cmpTltLockBySpRspSdata_t;
1407
1408typedef struct {
1409    cmpTltLockBySpRspSdata_t sdata;
1410    cmpMac_t mac;
1411} cmpTltContLockBySpRsp_t;
1412
1413/** TltContLockBySp response. */
1414typedef struct {
1415    cmpTltContLockBySpRsp_t rsp;
1416    mcSoTltCont_t soTltCont;
1417} cmpRspTltContLockBySp_t;
1418
1419/** @} */
1420
1421/** @} */
1422
1423/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP
1424 * @{ */
1425
1426/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP_CMD Command
1427 * @{ */
1428
1429typedef struct {
1430    cmpCommandHeader_t cmdHeader;
1431    mcSpid_t spid;
1432    mcUuid_t uuid;
1433} cmpTltUnlockBySpCmdSdata_t;
1434
1435typedef struct {
1436    cmpTltUnlockBySpCmdSdata_t sdata;
1437    cmpMac_t mac;
1438} cmpTltContUnlockBySpCmd_t;
1439
1440/** TltContUnlockBySp command. */
1441typedef struct {
1442    cmpTltContUnlockBySpCmd_t cmd;
1443    mcSoTltCont_t soTltCont;
1444} cmpCmdTltContUnlockBySp_t;
1445
1446/** @} */
1447
1448/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP_RSP Response
1449 * @{ */
1450
1451typedef struct {
1452    mcSoTltCont_t soTltCont;
1453} cmpTltUnlockBySpRspEdata_t;
1454
1455typedef struct {
1456    cmpTltUnlockBySpRspEdata_t edata;
1457    uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltUnlockBySpRspEdata_t))];
1458} cmpTltUnlockBySpRspEd_t;
1459
1460typedef struct {
1461    cmpResponseHeader_t rspHeader;
1462    cmpTltUnlockBySpRspEd_t ed;
1463} cmpTltUnlockBySpRspSdata_t;
1464
1465typedef struct {
1466    cmpTltUnlockBySpRspSdata_t sdata;
1467    cmpMac_t mac;
1468} cmpTltContUnlockBySpRsp_t;
1469
1470/** TltContUnlockBySp response. */
1471typedef struct {
1472    cmpTltContUnlockBySpRsp_t rsp;
1473    mcSoTltCont_t soTltCont;
1474} cmpRspTltContUnlockBySp_t;
1475
1476/** @} */
1477
1478/** @} */
1479
1480/** @defgroup MC_CMP_CMD_GET_SUID
1481* @{ */
1482
1483/** @defgroup MC_CMP_CMD_GET_SUID_CMD Command
1484* @{ */
1485
1486/** GetSuid command. */
1487typedef struct {
1488    cmpCommandHeader_t cmdHeader;
1489} cmpCmdGetSuid_t;
1490
1491/** @} */
1492
1493/** @defgroup MC_CMP_CMD_GET_SUID_RSP Response
1494* @{ */
1495
1496/** GetSuid response. */
1497typedef struct {
1498cmpResponseHeader_t rspHeader;
1499    mcSuid_t suid;
1500} cmpRspGetSuid_t;
1501
1502/** @} */
1503
1504/** @} */
1505
1506/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE
1507* @{ */
1508
1509/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE_CMD Command
1510* @{ */
1511
1512typedef struct {
1513    cmpCommandHeader_t cmdHeader;
1514} cmpAuthenticateTerminateCmdSdata_t;
1515
1516typedef struct {
1517    cmpAuthenticateTerminateCmdSdata_t sdata;
1518    cmpMac_t mac;
1519} cmpAuthenticateTerminateCmd_t;
1520
1521/** AuthenticateTerminate command. */
1522typedef struct {
1523    cmpAuthenticateTerminateCmd_t cmd;
1524} cmpCmdAuthenticateTerminate_t;
1525
1526/** @} */
1527
1528/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE_RSP Response
1529* @{ */
1530
1531typedef struct {
1532    cmpResponseHeader_t rspHeader;
1533} cmpAuthenticateTerminateRspSdata_t;
1534
1535typedef struct {
1536    cmpAuthenticateTerminateRspSdata_t sdata;
1537    cmpMac_t mac;
1538} cmpTerminateAutenticateRsp_t;
1539
1540/** AuthenticateTerminate response. */
1541typedef struct {
1542    cmpTerminateAutenticateRsp_t rsp;
1543} cmpRspAuthenticateTerminate_t;
1544
1545/** @} */
1546
1547/** @} */
1548
1549/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONALIZE
1550 * @{ */
1551
1552/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONALIZE_CMD Command
1553 * @{ */
1554
1555typedef struct {
1556    mcPid_t pid;
1557    mcCoDataCont_t persoData;
1558} cmpTltContPersonalizeCmdEdata_t;
1559
1560typedef struct {
1561    cmpTltContPersonalizeCmdEdata_t edata;
1562    uint8_t padding_[CMP_ED_PADDING(sizeof(cmpTltContPersonalizeCmdEdata_t))];
1563} cmpTltContPersonalizeCmdEd_t;
1564
1565typedef struct {
1566    cmpCommandHeader_t cmdHeader;
1567    mcSpid_t spid;
1568    mcUuid_t uuid;
1569    uint32_t edLen;
1570    cmpTltContPersonalizeCmdEd_t ed;
1571} cmpTltContPersonalizeCmdSdata_t;
1572
1573typedef struct {
1574    cmpTltContPersonalizeCmdSdata_t sdata;
1575    cmpMac_t mac_;
1576} cmpTltContPersonalizeCmd_t;
1577
1578/** TltContPersonalize command. */
1579typedef struct {
1580    cmpTltContPersonalizeCmd_t cmd;
1581    mcSoTltCont_t soTltCont_;
1582} cmpCmdTltContPersonalize_t;
1583
1584/** @} */
1585
1586/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONLIZE_RSP Response
1587 * @{ */
1588
1589typedef struct {
1590    mcSoDataCont_t soDataCont;
1591} cmpTltContPersonalizeRspEdata_t;
1592
1593typedef struct {
1594    cmpTltContPersonalizeRspEdata_t edata;
1595    uint8_t padding_[CMP_ED_PADDING(sizeof(cmpTltContPersonalizeRspEdata_t))];
1596} cmpTltContPersonalizeRspEd_t;
1597
1598typedef struct {
1599    cmpResponseHeader_t rspHeader;
1600    uint32_t edLen;
1601    cmpTltContPersonalizeRspEd_t ed;
1602} cmpTltContPersonalizeRspSdata_t;
1603
1604typedef struct {
1605    cmpTltContPersonalizeRspSdata_t sdata;
1606    cmpMac_t mac_;
1607} cmpTltContPersonalizeRsp_t;
1608
1609/** TltContPersonalize response. */
1610typedef struct {
1611    cmpTltContPersonalizeRsp_t rsp;
1612    mcSoDataCont_t soDataCont_;
1613} cmpRspTltContPersonalize_t;
1614
1615
1616/** @} */
1617
1618/** @} */
1619
1620
1621#endif // CMP_H_
1622
1623/** @} */
1624
1625