Home | History | Annotate | Download | only in TlCm
      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 
     51 typedef uint32_t cmpCommandId_t;
     52 typedef uint32_t cmpResponseId_t;
     53 typedef 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  */
     64 typedef struct {
     65     /** Command ID. */
     66     cmpCommandId_t commandId;
     67 } cmpCommandHeader_t;
     68 
     69 /**
     70  * CMP response header.
     71  */
     72 typedef 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. */
     80 typedef 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. */
    100 typedef struct {
    101     uint8_t mac[CMP_MAC_SIZE];
    102 } cmpMac_t;
    103 
    104 /** 64-bit random number. */
    105 typedef struct {
    106     uint8_t data[8];
    107 } cmpRnd8_t;
    108 
    109 /** 256-bit random number. */
    110 typedef struct {
    111     uint8_t data[32];
    112 } cmpRnd32_t;
    113 
    114 /** Version tags. */
    115 typedef enum {
    116     CMP_VERSION_TAG1 = 0x00000001, // Deprecated.
    117     CMP_VERSION_TAG2 = 0x00000002,
    118 } cmpVersionTag_t;
    119 
    120 /** Version data for version tag 1. */
    121 typedef struct {
    122     uint32_t number;
    123 } cmpVersionData1_t;
    124 
    125 /** Version data for version tag 2. */
    126 typedef struct {
    127     mcVersionInfo_t versionInfo;
    128 } cmpVersionData2_t;
    129 
    130 /** Version data. */
    131 typedef 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. */
    143 typedef 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. */
    153 typedef struct {
    154 cmpResponseHeader_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 
    169 typedef struct {
    170     cmpCommandHeader_t cmdHeader;
    171     mcSuid_t suid;
    172     mcSymmetricKey_t kSocAuth;
    173     uint32_t kid;
    174 } cmpGenAuthTokenCmdSdata_t;
    175 
    176 typedef struct {
    177     cmpGenAuthTokenCmdSdata_t sdata;
    178     uint8_t pssSignature[CMP_GEN_AUTH_TOKEN_PSS_SIZE];
    179 } cmpGenAuthTokenCmd_t;
    180 
    181 /** GenAuthToken command. */
    182 typedef struct {
    183     cmpGenAuthTokenCmd_t cmd;
    184 } cmpCmdGenAuthToken_t;
    185 
    186 /** @} */
    187 
    188 /** @defgroup MC_CMP_CMD_GENERATE_AUTH_TOKEN_RSP Response
    189  * @{ */
    190 
    191 typedef struct {
    192     cmpResponseHeader_t rspHeader;
    193     // No MAC.
    194 } cmpGenAuthTokenRsp_t;
    195 
    196 /** GenAuthToken response. */
    197 typedef 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 
    212 typedef struct {
    213     cmpCommandHeader_t cmdHeader;
    214 } cmpBeginSocAuthenticationCmd_t;
    215 
    216 /** BeginSocAuthentication command. */
    217 typedef 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 
    227 typedef struct {
    228     cmpResponseHeader_t rspHeader;
    229     mcSuid_t suid;
    230     cmpRnd8_t rnd1;
    231 } cmpBeginSocAuthenticationRspSdata_t;
    232 
    233 typedef struct {
    234     cmpBeginSocAuthenticationRspSdata_t sdata;
    235     cmpMac_t mac;
    236 } cmpBeginSocAuthenticationRsp_t;
    237 
    238 /** BeginSocAuthentication response. */
    239 typedef 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 
    253 typedef struct {
    254     cmpCommandHeader_t cmdHeader;
    255 } cmpBeginRootAuthenticationCmd_t;
    256 
    257 /** BeginRootAuthentication command. */
    258 typedef 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 
    268 typedef struct {
    269     cmpResponseHeader_t rspHeader;
    270     mcSuid_t suid;
    271     cmpRnd8_t rnd1;
    272 } cmpBeginRootAuthenticationRspSdata_t;
    273 
    274 typedef struct {
    275     cmpBeginRootAuthenticationRspSdata_t sdata;
    276     cmpMac_t mac;
    277 } cmpBeginRootAuthenticationRsp_t;
    278 
    279 /** BeginRootAuthentication response. */
    280 typedef 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  * @{ */
    293 typedef struct {
    294     cmpCommandHeader_t cmdHeader;
    295     mcSpid_t spid;
    296 } cmpBeginSpAuthenticationCmdSdata_t;
    297 
    298 typedef struct {
    299     cmpBeginSpAuthenticationCmdSdata_t sdata;
    300 } cmpBeginSpAuthenticationCmd_t;
    301 
    302 /** BeginSpAuthentication command. */
    303 typedef 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  * @{ */
    313 typedef struct {
    314     cmpResponseHeader_t rspHeader;
    315     mcSuid_t suid;
    316     mcSpid_t spid;
    317     cmpRnd8_t rnd1;
    318 } cmpBeginSpAuthenticationRspSdata_t;
    319 
    320 typedef struct {
    321     cmpBeginSpAuthenticationRspSdata_t sdata;
    322     cmpMac_t mac;
    323 } cmpBeginSpAuthenticationRsp_t;
    324 
    325 /** BeginSpAuthentication response. */
    326 typedef 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  * @{ */
    339 typedef 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 
    347 typedef struct {
    348     cmpAuthMsgEdata_t edata;
    349     uint8_t padding[CMP_ED_PADDING(sizeof(cmpAuthMsgEdata_t))];
    350 } cmpAuthCmdEd_t;
    351 
    352 typedef struct {
    353     cmpCommandHeader_t cmdHeader;
    354     cmpAuthCmdEd_t ed;
    355 } cmpAuthCmdSdata_t;
    356 
    357 typedef struct {
    358     cmpAuthCmdSdata_t sdata;
    359     cmpMac_t mac;
    360 } cmpAuthenticateCmd_t;
    361 
    362 /** Authenticate command. */
    363 typedef struct {
    364     cmpAuthenticateCmd_t cmd;
    365 } cmpCmdAuthenticate_t;
    366 
    367 /** @} */
    368 
    369 /** @defgroup MC_CMP_CMD_AUTHENTICATE_RSP Response
    370  * @{ */
    371 typedef 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 
    379 typedef struct {
    380     cmpAuthRspEdata_t edata;
    381     uint8_t padding[CMP_ED_PADDING(sizeof(cmpAuthRspEdata_t))];
    382 } cmpAuthRspEd_t;
    383 
    384 typedef struct {
    385     cmpResponseHeader_t rspHeader;
    386     cmpAuthRspEd_t ed;
    387 } cmpAuthRspSdata_t;
    388 
    389 typedef struct {
    390     cmpAuthRspSdata_t sdata;
    391     cmpMac_t mac;
    392 } cmpAuthenticateRsp_t;
    393 
    394 /** Authenticate response. */
    395 typedef 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 
    409 typedef struct {
    410     mcSymmetricKey_t kRootAuth;
    411 } cmpRootRegActMsgEdata_t;
    412 
    413 typedef struct {
    414     cmpRootRegActMsgEdata_t edata;
    415     uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootRegActMsgEdata_t))];
    416 } cmpRootRegActCmdEd_t;
    417 
    418 typedef struct {
    419     cmpCommandHeader_t cmdHeader;
    420     mcRootid_t rootid;
    421     cmpRootRegActCmdEd_t ed;
    422 } cmpRootRegActCmdSdata_t;
    423 
    424 typedef struct {
    425     cmpRootRegActCmdSdata_t sdata;
    426     cmpMac_t mac;
    427 } cmpRootContRegisterActivateCmd_t;
    428 
    429 /** RootContRegisterActivate command. */
    430 typedef struct {
    431     cmpRootContRegisterActivateCmd_t cmd;
    432 } cmpCmdRootContRegisterActivate_t;
    433 
    434 /** @} */
    435 
    436 /** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE_RSP Response
    437  * @{ */
    438 
    439 typedef struct {
    440     mcSoRootCont_t soRootCont;
    441 } cmpRootRegActRspEdata_t;
    442 
    443 typedef struct {
    444     cmpRootRegActRspEdata_t edata;
    445     uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootRegActRspEdata_t))];
    446 } cmpRootRegActRspEd_t;
    447 
    448 typedef struct {
    449     cmpResponseHeader_t rspHeader;
    450     cmpRootRegActRspEd_t ed;
    451 } cmpRootRegActRspSdata_t;
    452 
    453 typedef struct {
    454     cmpRootRegActRspSdata_t sdata;
    455     cmpMac_t mac;
    456 } cmpRootContRegisterActivateRsp_t;
    457 
    458 /** RooContRegisterActivate response. */
    459 typedef 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 
    474 typedef struct {
    475     mcSuid_t suid;
    476     mcSoAuthTokenCont_t soAuthTokenCont;
    477 } cmpRootUnregMsgEdata_t;
    478 
    479 typedef struct {
    480     cmpRootUnregMsgEdata_t edata;
    481     uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootUnregMsgEdata_t))];
    482 } cmpRootUnregCmdEd_t;
    483 
    484 typedef struct {
    485     cmpCommandHeader_t cmdHeader;
    486     cmpRootUnregCmdEd_t ed;
    487 } cmpRootUnregCmdSdata_t;
    488 
    489 typedef struct {
    490     cmpRootUnregCmdSdata_t sdata;
    491     cmpMac_t mac;
    492 } cmpRootContUnregisterCmd_t;
    493 
    494 /** RootContUnregister command. */
    495 typedef struct {
    496     cmpRootContUnregisterCmd_t cmd;
    497 } cmpCmdRootContUnregister_t;
    498 
    499 /** @} */
    500 
    501 /** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER_RSP Response
    502  * @{ */
    503 
    504 typedef struct {
    505     mcSuid_t suid;
    506 } cmpRootUnregRspEdata_t;
    507 
    508 typedef struct {
    509     cmpRootUnregRspEdata_t edata;
    510     uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootUnregRspEdata_t))];
    511 } cmpRootUnregRspEd_t;
    512 
    513 typedef struct {
    514     cmpResponseHeader_t rspHeader;
    515     cmpRootUnregRspEd_t ed;
    516 } cmpRootUnregRspSdata_t;
    517 
    518 typedef struct {
    519     cmpRootUnregRspSdata_t sdata;
    520     cmpMac_t mac;
    521 } cmpRootContUnregisterRsp_t;
    522 
    523 /** RootContUnregister response. */
    524 typedef 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 
    539 typedef struct {
    540     cmpCommandHeader_t cmdHeader;
    541 } cmpRootLockByRootCmdSdata_t;
    542 
    543 typedef struct {
    544     cmpRootLockByRootCmdSdata_t sdata;
    545     cmpMac_t mac;
    546 } cmpRootContLockByRootCmd_t;
    547 
    548 /** RootContLockByRoot command. */
    549 typedef 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 
    558 typedef struct {
    559     mcSoRootCont_t soRootCont;
    560 } cmpRootLockByRootRspEdata_t;
    561 
    562 typedef struct {
    563     cmpRootLockByRootRspEdata_t edata;
    564     uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootLockByRootRspEdata_t))];
    565 } cmpRootLockByRootRspEd_t;
    566 
    567 typedef struct {
    568     cmpResponseHeader_t rspHeader;
    569     cmpRootLockByRootRspEd_t ed;
    570 } cmpRootLockByRootRspSdata_t;
    571 
    572 typedef struct {
    573     cmpRootLockByRootRspSdata_t sdata;
    574     cmpMac_t mac;
    575 } cmpRootContLockByRootRsp_t;
    576 
    577 /** RootContLockByRoot response. */
    578 typedef 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 
    593 typedef struct {
    594     cmpCommandHeader_t cmdHeader;
    595 } cmpRootUnlockByRootCmdSdata_t;
    596 
    597 typedef struct {
    598     cmpRootUnlockByRootCmdSdata_t sdata;
    599     cmpMac_t mac;
    600 } cmpRootContUnlockByRootCmd_t;
    601 
    602 /** RootContUnlockByRoot command. */
    603 typedef 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 
    612 typedef struct {
    613     mcSoRootCont_t soRootCont;
    614 } cmpRootUnlockByRootRspEdata_t;
    615 
    616 typedef struct {
    617     cmpRootUnlockByRootRspEdata_t edata;
    618     uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootUnlockByRootRspEdata_t))];
    619 } cmpRootUnlockByRootRspEd_t;
    620 
    621 typedef struct {
    622     cmpResponseHeader_t rspHeader;
    623     cmpRootUnlockByRootRspEd_t ed;
    624 } cmpRootUnlockByRootRspSdata_t;
    625 
    626 typedef struct {
    627     cmpRootUnlockByRootRspSdata_t sdata;
    628     cmpMac_t mac;
    629 } cmpRootContUnlockByRootRsp_t;
    630 
    631 /** RootContUnlockByRoot response. */
    632 typedef 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 
    647 typedef struct {
    648     mcSymmetricKey_t kSpAuth;
    649 } cmpSpRegActMsgEdata_t;
    650 
    651 typedef struct {
    652     cmpSpRegActMsgEdata_t edata;
    653     uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegActMsgEdata_t))];
    654 } cmpSpRegActCmdEd_t;
    655 
    656 typedef struct {
    657     cmpCommandHeader_t cmdHeader;
    658     mcSpid_t spid;
    659     cmpSpRegActCmdEd_t ed;
    660 } cmpSpRegActCmdSdata_t;
    661 
    662 typedef struct {
    663     cmpSpRegActCmdSdata_t sdata;
    664     cmpMac_t mac;
    665 } cmpSpContRegisterActivateCmd_t;
    666 
    667 /** SpContRegisterActivate command. */
    668 typedef struct {
    669     cmpSpContRegisterActivateCmd_t cmd;
    670 } cmpCmdSpContRegisterActivate_t;
    671 
    672 /** @} */
    673 
    674 /** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE_RSP Response
    675  * @{ */
    676 
    677 typedef struct {
    678     mcSoRootCont_t soRootCont;
    679     mcSoSpCont_t soSpCont;
    680 } cmpSpRegActRspEdata_t;
    681 
    682 typedef struct {
    683     cmpSpRegActRspEdata_t edata;
    684     uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegActRspEdata_t))];
    685 } cmpSpRegActRspEd_t;
    686 
    687 typedef struct {
    688     cmpResponseHeader_t rspHeader;
    689     cmpSpRegActRspEd_t ed;
    690 } cmpSpRegActRspSdata_t;
    691 
    692 typedef struct {
    693     cmpSpRegActRspSdata_t sdata;
    694     cmpMac_t mac;
    695 } cmpSpContRegisterActivateRsp_t;
    696 
    697 /** SpContRegisterActivate response. */
    698 typedef 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 
    714 typedef struct {
    715     mcSymmetricKey_t kSpAuth;
    716 } cmpSpRegisterMsgEdata_t;
    717 
    718 typedef struct {
    719     cmpSpRegisterMsgEdata_t edata;
    720     uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegisterMsgEdata_t))];
    721 } cmpSpRegisterCmdEd_t;
    722 
    723 typedef struct {
    724     cmpCommandHeader_t cmdHeader;
    725     mcSpid_t spid;
    726     cmpSpRegisterCmdEd_t ed;
    727 } cmpSpRegisterCmdSdata_t;
    728 
    729 typedef struct {
    730     cmpSpRegisterCmdSdata_t sdata;
    731     cmpMac_t mac;
    732 } cmpSpContRegisterCmd_t;
    733 
    734 /** SpContRegister command. */
    735 typedef struct {
    736     cmpSpContRegisterCmd_t cmd;
    737 } cmpCmdSpContRegister_t;
    738 
    739 /** @} */
    740 
    741 /** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_RSP Response
    742  * @{ */
    743 
    744 typedef struct {
    745     mcSoRootCont_t soRootCont;
    746     mcSoSpCont_t soSpCont;
    747 } cmpSpRegisterRspEdata_t;
    748 
    749 typedef struct {
    750     cmpSpRegisterRspEdata_t edata;
    751     uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegisterRspEdata_t))];
    752 } cmpSpRegisterRspEd_t;
    753 
    754 typedef struct {
    755     cmpResponseHeader_t rspHeader;
    756     cmpSpRegisterRspEd_t ed;
    757 } cmpSpRegisterRspSdata_t;
    758 
    759 typedef struct {
    760     cmpSpRegisterRspSdata_t sdata;
    761     cmpMac_t mac;
    762 } cmpSpContRegisterRsp_t;
    763 
    764 /** SpContRegister response. */
    765 typedef 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 
    781 typedef struct {
    782     mcSymmetricKey_t kSpAuth;
    783 } cmpSpActivateMsgEdata_t;
    784 
    785 typedef struct {
    786     cmpSpActivateMsgEdata_t edata;
    787     uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpActivateMsgEdata_t))];
    788 } cmpSpActivateCmdEd_t;
    789 
    790 typedef struct {
    791     cmpCommandHeader_t cmdHeader;
    792     mcSpid_t spid;
    793     cmpSpActivateCmdEd_t ed;
    794 } cmpSpActivateCmdSdata_t;
    795 
    796 typedef struct {
    797     cmpSpActivateCmdSdata_t sdata;
    798     cmpMac_t mac;
    799 } cmpSpContActivateCmd_t;
    800 
    801 /** SpContActivate command. */
    802 typedef struct {
    803     cmpSpContActivateCmd_t cmd;
    804 } cmpCmdSpContActivate_t;
    805 
    806 /** @} */
    807 
    808 /** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE_RSP Response
    809  * @{ */
    810 
    811 typedef struct {
    812     mcSoSpCont_t soSpCont;
    813 } cmpSpActivateRspEdata_t;
    814 
    815 typedef struct {
    816     cmpSpActivateRspEdata_t edata;
    817     uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpActivateRspEdata_t))];
    818 } cmpSpActivateRspEd_t;
    819 
    820 typedef struct {
    821     cmpResponseHeader_t rspHeader;
    822     cmpSpActivateRspEd_t ed;
    823 } cmpSpActivateRspSdata_t;
    824 
    825 typedef struct {
    826     cmpSpActivateRspSdata_t sdata;
    827     cmpMac_t mac;
    828 } cmpSpContActivateRsp_t;
    829 
    830 /** SpContActivate response. */
    831 typedef 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 
    846 typedef struct {
    847     cmpCommandHeader_t cmdHeader;
    848     mcSpid_t spid;
    849 } cmpSpContUnregCmdSdata_t;
    850 
    851 typedef struct {
    852     cmpSpContUnregCmdSdata_t sdata;
    853     cmpMac_t mac;
    854 } cmpSpContUnregisterCmd_t;
    855 
    856 /** SpContUnregister command. */
    857 typedef struct {
    858     cmpSpContUnregisterCmd_t cmd;
    859 } cmpCmdSpContUnregister_t;
    860 
    861 /** @} */
    862 
    863 /** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER_RSP Response
    864  * @{ */
    865 
    866 typedef struct {
    867     mcSoRootCont_t soRootCont;
    868 } cmpSpUnregRspEdata_t;
    869 
    870 typedef struct {
    871     cmpSpUnregRspEdata_t edata;
    872     uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpUnregRspEdata_t))];
    873 } cmpSpUnregRspEd_t;
    874 
    875 typedef struct {
    876     cmpResponseHeader_t rspHeader;
    877     cmpSpUnregRspEd_t ed;
    878 } cmpSpContUnregRspSdata_t;
    879 
    880 typedef struct {
    881     cmpSpContUnregRspSdata_t sdata;
    882     cmpMac_t mac;
    883 } cmpSpContUnregisterRsp_t;
    884 
    885 /** SpContUnregister response. */
    886 typedef 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 
    901 typedef struct {
    902     cmpCommandHeader_t cmdHeader;
    903     mcSpid_t spid;
    904 } cmpSpLockByRootCmdSdata_t;
    905 
    906 typedef struct {
    907     cmpSpLockByRootCmdSdata_t sdata;
    908     cmpMac_t mac;
    909 } cmpSpContLockByRootCmd_t;
    910 
    911 /** SpContLockByRoot command. */
    912 typedef 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 
    922 typedef struct {
    923     mcSoSpCont_t soSpCont;
    924 } cmpSpLockByRootRspEdata_t;
    925 
    926 typedef struct {
    927     cmpSpLockByRootRspEdata_t edata;
    928     uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpLockByRootRspEdata_t))];
    929 } cmpSpLockByRootRspEd_t;
    930 
    931 typedef struct {
    932     cmpResponseHeader_t rspHeader;
    933     cmpSpLockByRootRspEd_t ed;
    934 } cmpSpLockByRootRspSdata_t;
    935 
    936 typedef struct {
    937     cmpSpLockByRootRspSdata_t sdata;
    938     cmpMac_t mac;
    939 } cmpSpContLockByRootRsp_t;
    940 
    941 /** SpContLockByRoot response. */
    942 typedef 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 
    957 typedef struct {
    958     cmpCommandHeader_t cmdHeader;
    959     mcSpid_t spid;
    960 } cmpSpUnlockByRootCmdSdata_t;
    961 
    962 typedef struct {
    963     cmpSpUnlockByRootCmdSdata_t sdata;
    964     cmpMac_t mac;
    965 } cmpSpContUnlockByRootCmd_t;
    966 
    967 /** SpContUnlockByRoot command. */
    968 typedef 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 
    978 typedef struct {
    979     mcSoSpCont_t soSpCont;
    980 } cmpSpUnlockByRootRspEdata_t;
    981 
    982 typedef struct {
    983     cmpSpUnlockByRootRspEdata_t edata;
    984     uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpUnlockByRootRspEdata_t))];
    985 } cmpSpUnlockByRootRspEd_t;
    986 
    987 typedef struct {
    988     cmpResponseHeader_t rspHeader;
    989     cmpSpUnlockByRootRspEd_t ed;
    990 } cmpSpUnlockByRootRspSdata_t;
    991 
    992 typedef struct {
    993     cmpSpUnlockByRootRspSdata_t sdata;
    994     cmpMac_t mac;
    995 } cmpSpContUnlockByRootRsp_t;
    996 
    997 /** SpContUnlockByRoot response. */
    998 typedef 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 
   1013 typedef struct {
   1014     cmpCommandHeader_t cmdHeader;
   1015     mcSpid_t spid;
   1016 } cmpSpLockBySpCmdSdata_t;
   1017 
   1018 typedef struct {
   1019     cmpSpLockBySpCmdSdata_t sdata;
   1020     cmpMac_t mac;
   1021 } cmpSpContLockBySpCmd_t;
   1022 
   1023 /** SpContLockBySp command. */
   1024 typedef 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 
   1033 typedef struct {
   1034     mcSoSpCont_t soSpCont;
   1035 } cmpSpLockBySpRspEdata_t;
   1036 
   1037 typedef struct {
   1038     cmpSpLockBySpRspEdata_t edata;
   1039     uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpLockBySpRspEdata_t))];
   1040 } cmpSpLockBySpRspEd_t;
   1041 
   1042 typedef struct {
   1043     cmpResponseHeader_t rspHeader;
   1044     cmpSpLockBySpRspEd_t ed;
   1045 } cmpSpLockBySpRspSdata_t;
   1046 
   1047 typedef struct {
   1048     cmpSpLockBySpRspSdata_t sdata;
   1049     cmpMac_t mac;
   1050 } cmpSpContLockBySpRsp_t;
   1051 
   1052 /** SpContLockBySp response. */
   1053 typedef 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 
   1068 typedef struct {
   1069     cmpCommandHeader_t cmdHeader;
   1070     mcSpid_t spid;
   1071 } cmpSpUnlockBySpCmdSdata_t;
   1072 
   1073 typedef struct {
   1074     cmpSpUnlockBySpCmdSdata_t sdata;
   1075     cmpMac_t mac;
   1076 } cmpSpContUnlockBySpCmd_t;
   1077 
   1078 /** SpContUnlockBySp command. */
   1079 typedef 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 
   1088 typedef struct {
   1089     mcSoSpCont_t soSpCont;
   1090 } cmpSpUnlockBySpRspEdata_t;
   1091 
   1092 typedef struct {
   1093     cmpSpUnlockBySpRspEdata_t edata;
   1094     uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpUnlockBySpRspEdata_t))];
   1095 } cmpSpUnlockBySpRspEd_t;
   1096 
   1097 typedef struct {
   1098     cmpResponseHeader_t rspHeader;
   1099     cmpSpUnlockBySpRspEd_t ed;
   1100 } cmpSpUnlockBySpRspSdata_t;
   1101 
   1102 typedef struct {
   1103     cmpSpUnlockBySpRspSdata_t sdata;
   1104     cmpMac_t mac;
   1105 } cmpSpContUnlockBySpRsp_t;
   1106 
   1107 /** SpContUnlockBySp response. */
   1108 typedef 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 
   1123 typedef struct {
   1124     mcSymmetricKey_t kSpTltEnc;
   1125 } cmpTltRegMsgEdata_t;
   1126 
   1127 typedef struct {
   1128     cmpTltRegMsgEdata_t edata;
   1129     uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegMsgEdata_t))];
   1130 } cmpTltRegCmdEd_t;
   1131 
   1132 typedef struct {
   1133     cmpCommandHeader_t cmdHeader;
   1134     mcSpid_t spid;
   1135     mcUuid_t uuid;
   1136     cmpTltRegCmdEd_t ed;
   1137 } cmpTltRegCmdSdata_t;
   1138 
   1139 typedef struct {
   1140     cmpTltRegCmdSdata_t sdata;
   1141     cmpMac_t mac;
   1142 } cmpTltContRegisterCmd_t;
   1143 
   1144 /** TltContRegister command. */
   1145 typedef struct {
   1146     cmpTltContRegisterCmd_t cmd;
   1147 } cmpCmdTltContRegister_t;
   1148 
   1149 /** @} */
   1150 
   1151 /** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_RSP Response
   1152  * @{ */
   1153 
   1154 typedef struct {
   1155     mcSoSpCont_t soSpCont;
   1156     mcSoTltCont_t soTltCont;
   1157 } cmpTltRegRspEdata_t;
   1158 
   1159 typedef struct {
   1160     cmpTltRegRspEdata_t edata;
   1161     uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegRspEdata_t))];
   1162 } cmpTltRegRspEd_t;
   1163 
   1164 typedef struct {
   1165     cmpResponseHeader_t rspHeader;
   1166     cmpTltRegRspEd_t ed;
   1167 } cmpTltRegRspSdata_t;
   1168 
   1169 typedef struct {
   1170     cmpTltRegRspSdata_t sdata;
   1171     cmpMac_t mac;
   1172 } cmpTltContRegisterRsp_t;
   1173 
   1174 /** TltContRegister response. */
   1175 typedef 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 
   1191 typedef struct {
   1192     cmpCommandHeader_t cmdHeader;
   1193     mcSpid_t spid;
   1194     mcUuid_t uuid;
   1195 } cmpTltActCmdSdata_t;
   1196 
   1197 typedef struct {
   1198     cmpTltActCmdSdata_t sdata;
   1199     cmpMac_t mac;
   1200 } cmpTltContActivateCmd_t;
   1201 
   1202 /** TltContActivate command. */
   1203 typedef 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 
   1213 typedef struct {
   1214     mcSoTltCont_t soTltCont;
   1215 } cmpTltActRspEdata_t;
   1216 
   1217 typedef struct {
   1218     cmpTltActRspEdata_t edata;
   1219     uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltActRspEdata_t))];
   1220 } cmpTltActRspEd_t;
   1221 
   1222 typedef struct {
   1223     cmpResponseHeader_t rspHeader;
   1224     cmpTltActRspEd_t ed;
   1225 } cmpTltActRspSdata_t;
   1226 
   1227 typedef struct {
   1228     cmpTltActRspSdata_t sdata;
   1229     cmpMac_t mac;
   1230 } cmpTltContActivateRsp_t;
   1231 
   1232 /** TltContActivate response. */
   1233 typedef 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 
   1248 typedef struct {
   1249     mcSymmetricKey_t kSpTltEnc;
   1250 } cmpTltRegActMsgEdata_t;
   1251 
   1252 typedef struct {
   1253     cmpTltRegActMsgEdata_t edata;
   1254     uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegActMsgEdata_t))];
   1255 } cmpTltRegActCmdEd_t;
   1256 
   1257 typedef struct {
   1258     cmpCommandHeader_t cmdHeader;
   1259     mcSpid_t spid;
   1260     mcUuid_t uuid;
   1261     cmpTltRegActCmdEd_t ed;
   1262 } cmpTltRegActCmdSdata_t;
   1263 
   1264 typedef struct {
   1265     cmpTltRegActCmdSdata_t sdata;
   1266     cmpMac_t mac;
   1267 } cmpTltContRegisterActivateCmd_t;
   1268 
   1269 /** TltContRegisterActivate command. */
   1270 typedef struct {
   1271     cmpTltContRegisterActivateCmd_t cmd;
   1272 } cmpCmdTltContRegisterActivate_t;
   1273 
   1274 /** @} */
   1275 
   1276 /** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE_RSP Response
   1277  * @{ */
   1278 
   1279 typedef struct {
   1280     mcSoSpCont_t soSpCont;
   1281     mcSoTltCont_t soTltCont;
   1282 } cmpTltRegActRspEdata_t;
   1283 
   1284 typedef struct {
   1285     cmpTltRegActRspEdata_t edata;
   1286     uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegActRspEdata_t))];
   1287 } cmpTltRegActRspEd_t;
   1288 
   1289 typedef struct {
   1290     cmpResponseHeader_t rspHeader;
   1291     cmpTltRegActRspEd_t ed;
   1292 } cmpTltRegActRspSdata_t;
   1293 
   1294 typedef struct {
   1295     cmpTltRegActRspSdata_t sdata;
   1296     cmpMac_t mac;
   1297 } cmpTltContRegisterActivateRsp_t;
   1298 
   1299 /** TltContRegisterActivate response. */
   1300 typedef 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 
   1316 typedef struct {
   1317     cmpCommandHeader_t cmdHeader;
   1318     mcSpid_t spid;
   1319     mcUuid_t uuid;
   1320 } cmpTltUnregCmdSdata_t;
   1321 
   1322 typedef struct {
   1323     cmpTltUnregCmdSdata_t sdata;
   1324     cmpMac_t mac;
   1325 } cmpTltContUnregisterCmd_t;
   1326 
   1327 /** TltContUnregister command. */
   1328 typedef struct {
   1329     cmpTltContUnregisterCmd_t cmd;
   1330 } cmpCmdTltContUnregister_t;
   1331 
   1332 /** @} */
   1333 
   1334 /** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER_RSP Response
   1335  * @{ */
   1336 
   1337 typedef struct {
   1338     mcSoSpCont_t soSpCont;
   1339 } cmpTltUnregRspEdata_t;
   1340 
   1341 typedef struct {
   1342     cmpTltUnregRspEdata_t edata;
   1343     uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltUnregRspEdata_t))];
   1344 } cmpTltUnregRspEd_t;
   1345 
   1346 typedef struct {
   1347     cmpResponseHeader_t rspHeader;
   1348     cmpTltUnregRspEd_t ed;
   1349 } cmpTltUnregRspSdata_t;
   1350 
   1351 typedef struct {
   1352     cmpTltUnregRspSdata_t sdata;
   1353     cmpMac_t mac;
   1354 } cmpTltContUnregisterRsp_t;
   1355 
   1356 /** TltContUnregister response. */
   1357 typedef 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 
   1372 typedef struct {
   1373     cmpCommandHeader_t cmdHeader;
   1374     mcSpid_t spid;
   1375     mcUuid_t uuid;
   1376 } cmpTltLockBySpCmdSdata_t;
   1377 
   1378 typedef struct {
   1379     cmpTltLockBySpCmdSdata_t sdata;
   1380     cmpMac_t mac;
   1381 } cmpTltContLockBySpCmd_t;
   1382 
   1383 /** TltContLockBySp command. */
   1384 typedef 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 
   1394 typedef struct {
   1395     mcSoTltCont_t soTltCont;
   1396 } cmpTltLockBySpRspEdata_t;
   1397 
   1398 typedef struct {
   1399     cmpTltLockBySpRspEdata_t edata;
   1400     uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltLockBySpRspEdata_t))];
   1401 } cmpTltLockBySpRspEd_t;
   1402 
   1403 typedef struct {
   1404     cmpResponseHeader_t rspHeader;
   1405     cmpTltLockBySpRspEd_t ed;
   1406 } cmpTltLockBySpRspSdata_t;
   1407 
   1408 typedef struct {
   1409     cmpTltLockBySpRspSdata_t sdata;
   1410     cmpMac_t mac;
   1411 } cmpTltContLockBySpRsp_t;
   1412 
   1413 /** TltContLockBySp response. */
   1414 typedef 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 
   1429 typedef struct {
   1430     cmpCommandHeader_t cmdHeader;
   1431     mcSpid_t spid;
   1432     mcUuid_t uuid;
   1433 } cmpTltUnlockBySpCmdSdata_t;
   1434 
   1435 typedef struct {
   1436     cmpTltUnlockBySpCmdSdata_t sdata;
   1437     cmpMac_t mac;
   1438 } cmpTltContUnlockBySpCmd_t;
   1439 
   1440 /** TltContUnlockBySp command. */
   1441 typedef 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 
   1451 typedef struct {
   1452     mcSoTltCont_t soTltCont;
   1453 } cmpTltUnlockBySpRspEdata_t;
   1454 
   1455 typedef struct {
   1456     cmpTltUnlockBySpRspEdata_t edata;
   1457     uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltUnlockBySpRspEdata_t))];
   1458 } cmpTltUnlockBySpRspEd_t;
   1459 
   1460 typedef struct {
   1461     cmpResponseHeader_t rspHeader;
   1462     cmpTltUnlockBySpRspEd_t ed;
   1463 } cmpTltUnlockBySpRspSdata_t;
   1464 
   1465 typedef struct {
   1466     cmpTltUnlockBySpRspSdata_t sdata;
   1467     cmpMac_t mac;
   1468 } cmpTltContUnlockBySpRsp_t;
   1469 
   1470 /** TltContUnlockBySp response. */
   1471 typedef 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. */
   1487 typedef 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. */
   1497 typedef struct {
   1498 cmpResponseHeader_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 
   1512 typedef struct {
   1513     cmpCommandHeader_t cmdHeader;
   1514 } cmpAuthenticateTerminateCmdSdata_t;
   1515 
   1516 typedef struct {
   1517     cmpAuthenticateTerminateCmdSdata_t sdata;
   1518     cmpMac_t mac;
   1519 } cmpAuthenticateTerminateCmd_t;
   1520 
   1521 /** AuthenticateTerminate command. */
   1522 typedef struct {
   1523     cmpAuthenticateTerminateCmd_t cmd;
   1524 } cmpCmdAuthenticateTerminate_t;
   1525 
   1526 /** @} */
   1527 
   1528 /** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE_RSP Response
   1529 * @{ */
   1530 
   1531 typedef struct {
   1532     cmpResponseHeader_t rspHeader;
   1533 } cmpAuthenticateTerminateRspSdata_t;
   1534 
   1535 typedef struct {
   1536     cmpAuthenticateTerminateRspSdata_t sdata;
   1537     cmpMac_t mac;
   1538 } cmpTerminateAutenticateRsp_t;
   1539 
   1540 /** AuthenticateTerminate response. */
   1541 typedef 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 
   1555 typedef struct {
   1556     mcPid_t pid;
   1557     mcCoDataCont_t persoData;
   1558 } cmpTltContPersonalizeCmdEdata_t;
   1559 
   1560 typedef struct {
   1561     cmpTltContPersonalizeCmdEdata_t edata;
   1562     uint8_t padding_[CMP_ED_PADDING(sizeof(cmpTltContPersonalizeCmdEdata_t))];
   1563 } cmpTltContPersonalizeCmdEd_t;
   1564 
   1565 typedef 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 
   1573 typedef struct {
   1574     cmpTltContPersonalizeCmdSdata_t sdata;
   1575     cmpMac_t mac_;
   1576 } cmpTltContPersonalizeCmd_t;
   1577 
   1578 /** TltContPersonalize command. */
   1579 typedef 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 
   1589 typedef struct {
   1590     mcSoDataCont_t soDataCont;
   1591 } cmpTltContPersonalizeRspEdata_t;
   1592 
   1593 typedef struct {
   1594     cmpTltContPersonalizeRspEdata_t edata;
   1595     uint8_t padding_[CMP_ED_PADDING(sizeof(cmpTltContPersonalizeRspEdata_t))];
   1596 } cmpTltContPersonalizeRspEd_t;
   1597 
   1598 typedef struct {
   1599     cmpResponseHeader_t rspHeader;
   1600     uint32_t edLen;
   1601     cmpTltContPersonalizeRspEd_t ed;
   1602 } cmpTltContPersonalizeRspSdata_t;
   1603 
   1604 typedef struct {
   1605     cmpTltContPersonalizeRspSdata_t sdata;
   1606     cmpMac_t mac_;
   1607 } cmpTltContPersonalizeRsp_t;
   1608 
   1609 /** TltContPersonalize response. */
   1610 typedef 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