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