Merge remote-tracking branch 'quic/caf/google/MC12' into HEAD
Change-Id: Idc3305d250bbcb2a0f2c7fbac698e0693342e62c
diff --git a/common/MobiCore/inc/Mci/mcifc.h b/common/MobiCore/inc/Mci/mcifc.h
index 6cc35ae..598fa40 100644
--- a/common/MobiCore/inc/Mci/mcifc.h
+++ b/common/MobiCore/inc/Mci/mcifc.h
@@ -58,6 +58,7 @@
#define MC_FC_L2X0_SETUP2 ((uint32_t)(-23)) /**< Setup L2X0 register - part 2 */
#define MC_FC_L2X0_INVALL ((uint32_t)(-24)) /**< Invalidate all L2 cache */
#define MC_FC_L2X0_DEBUG ((uint32_t)(-25)) /**< Write L2X0 debug register */
+#define MC_FC_SW_RESET ((uint32_t)(-26)) /**< SW Reset if DDR has leftover content */
// --- MEM traces ---
#define MC_FC_MEM_TRACE ((uint32_t)(-31)) /**< Enable SWd tracing via memory */
// --- write access to CP15 regs ---
diff --git a/common/MobiCore/inc/TlCm/2.0/cmp.h b/common/MobiCore/inc/TlCm/2.0/cmp.h
index 8b4abf7..33182ad 100755
--- a/common/MobiCore/inc/TlCm/2.0/cmp.h
+++ b/common/MobiCore/inc/TlCm/2.0/cmp.h
@@ -1,9 +1,9 @@
-/** @addtogroup CMP
+/** @addtogroup CMP_2_0
* Content Management Protocol 2.0 Definitions.
*
- * The CMP (Content Management Protocol) is based on the TCI (Trustlet Control
- * Interface) and defines commands/responses with the CMTL (Content Management
- * Trustlet).
+ * The content management protocol (CMP) is based on the trustlet control
+ * interface (TCI) and defines commands/responses with the content management
+ * trustlet (TlCm).
*
* @{
*
@@ -46,42 +46,55 @@
#include "TlCm/cmpCommon.h"
/** Key size of encryption algorithm used for secure messaging. */
-#define CMP_MSG_KEY_SIZE 32
+#define CMP_MSG_KEY_SIZE 32
-/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION
+/** @defgroup MC_CMP_2_0_CMD_BEGIN_SOC_AUTHENTICATION \
+ MC_CMP_2_0_CMD_BEGIN_SOC_AUTHENTICATION
* @{ */
-/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_BEGIN_SOC_AUTHENTICATION_CMD Command_2_0
* @{ */
+/** BeginSocAuthentication non signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
} cmpBeginSocAuthenticationCmd_t;
/** BeginSocAuthentication command. */
typedef struct {
+ /** Command. */
cmpBeginSocAuthenticationCmd_t cmd;
+ /** AuthToken container secure object. */
mcSoAuthTokenCont_t soAuthTokenCont;
} cmpCmdBeginSocAuthentication_t;
/** @} */
-/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_BEGIN_SOC_AUTHENTICATION_RSP Response_2_0
* @{ */
+/** BeginSocAuthentication signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Suid. */
mcSuid_t suid;
+ /** SWd authentication random number. */
cmpRnd8_t rnd1;
} cmpBeginSocAuthenticationRspSdata_t;
+/** BeginSocAuthentication signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpBeginSocAuthenticationRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpBeginSocAuthenticationRsp_t;
/** BeginSocAuthentication response. */
typedef struct {
+ /** Response. */
cmpBeginSocAuthenticationRsp_t rsp;
} cmpRspBeginSocAuthentication_t;
@@ -89,40 +102,53 @@
/** @} */
-/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION
+/** @defgroup MC_CMP_2_0_CMD_BEGIN_ROOT_AUTHENTICATION \
+ MC_CMP_2_0_CMD_BEGIN_ROOT_AUTHENTICATION
* @{ */
-/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_BEGIN_ROOT_AUTHENTICATION_CMD Command_2_0
* @{ */
+/** BeginRootAuthentication non signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
} cmpBeginRootAuthenticationCmd_t;
/** BeginRootAuthentication command. */
typedef struct {
+ /** Command. */
cmpBeginRootAuthenticationCmd_t cmd;
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
} cmpCmdBeginRootAuthentication_t;
/** @} */
-/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_BEGIN_ROOT_AUTHENTICATION_RSP Response_2_0
* @{ */
+/** BeginRootAuthentication signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Suid. */
mcSuid_t suid;
+ /** SWd authentication random number. */
cmpRnd8_t rnd1;
} cmpBeginRootAuthenticationRspSdata_t;
+/** BeginRootAuthentication signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpBeginRootAuthenticationRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpBeginRootAuthenticationRsp_t;
/** BeginRootAuthentication response. */
typedef struct {
+ /** Response. */
cmpBeginRootAuthenticationRsp_t rsp;
} cmpRspBeginRootAuthentication_t;
@@ -130,47 +156,65 @@
/** @} */
-/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION
+/** @defgroup MC_CMP_2_0_CMD_BEGIN_SP_AUTHENTICATION \
+ MC_CMP_2_0_CMD_BEGIN_SP_AUTHENTICATION
* @{ */
-/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_BEGIN_SP_AUTHENTICATION_CMD Command_2_0
* @{ */
+/** BeginSpAuthentication non signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
} cmpBeginSpAuthenticationCmdSdata_t;
+/** BeginSpAuthentication non signed command and no signature. */
typedef struct {
+ /** Non signed command. */
cmpBeginSpAuthenticationCmdSdata_t sdata;
} cmpBeginSpAuthenticationCmd_t;
/** BeginSpAuthentication command. */
typedef struct {
+ /** Command. */
cmpBeginSpAuthenticationCmd_t cmd;
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpCmdBeginSpAuthentication_t;
/** @} */
-/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_BEGIN_SP_AUTHENTICATION_RSP Response_2_0
* @{ */
+/** BeginSpAuthentication signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Suid. */
mcSuid_t suid;
+ /** Spid. */
mcSpid_t spid;
+ /** SWd authentication random number. */
cmpRnd8_t rnd1;
} cmpBeginSpAuthenticationRspSdata_t;
+/** BeginSpAuthentication signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpBeginSpAuthenticationRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpBeginSpAuthenticationRsp_t;
/** BeginSpAuthentication response. */
typedef struct {
+ /** Response. */
cmpBeginSpAuthenticationRsp_t rsp;
} cmpRspBeginSpAuthentication_t;
@@ -178,70 +222,102 @@
/** @} */
-/** @defgroup MC_CMP_CMD_AUTHENTICATE
+/** @defgroup MC_CMP_2_0_CMD_AUTHENTICATE MC_CMP_2_0_CMD_AUTHENTICATE
* @{ */
-/** @defgroup MC_CMP_CMD_AUTHENTICATE_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_AUTHENTICATE_CMD Command_2_0
* @{ */
+/** Authenticate encrypted data command. */
typedef struct {
+ /** Suid. */
mcSuid_t suid;
+ /** EntityId. */
uint32_t entityId;
+ /** NWd authentication random number. */
cmpRnd8_t rnd2;
+ /** SWd authentication random number. */
cmpRnd8_t rnd1;
+ /** NWd authentication random seed. */
cmpRnd32_t k2;
} cmpAuthMsgEdata_t;
+/** Authenticate encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpAuthMsgEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpAuthMsgEdata_t))];
} cmpAuthCmdEd_t;
+/** Authenticate signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
+ /** Encrypted and padded data. */
cmpAuthCmdEd_t ed;
} cmpAuthCmdSdata_t;
+/** Authenticate signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpAuthCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpAuthenticateCmd_t;
/** Authenticate command. */
typedef struct {
+ /** Command. */
cmpAuthenticateCmd_t cmd;
} cmpCmdAuthenticate_t;
/** @} */
-/** @defgroup MC_CMP_CMD_AUTHENTICATE_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_AUTHENTICATE_RSP Response_2_0
* @{ */
+/** Authenticate encrypted data response. */
typedef struct {
+ /** Suid. */
mcSuid_t suid;
+ /** EntityId. */
uint32_t entityId;
+ /** SWd authentication random number. */
cmpRnd8_t rnd1;
+ /** NWd authentication random number. */
cmpRnd8_t rnd2;
+ /** SWd authentication random seed. */
cmpRnd32_t k1;
} cmpAuthRspEdata_t;
+/** Authenticate encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpAuthRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpAuthRspEdata_t))];
} cmpAuthRspEd_t;
+/** Authenticate signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpAuthRspEd_t ed;
} cmpAuthRspSdata_t;
+/** Authenticate signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpAuthRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpAuthenticateRsp_t;
/** Authenticate response. */
typedef struct {
+ /** Response. */
cmpAuthenticateRsp_t rsp;
} cmpRspAuthenticate_t;
@@ -249,64 +325,147 @@
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE
+/** @defgroup MC_CMP_2_0_CMD_AUTHENTICATE_TERMINATE \
+ MC_CMP_2_0_CMD_AUTHENTICATE_TERMINATE
* @{ */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_AUTHENTICATE_TERMINATE_CMD Command_2_0
* @{ */
+/** AuthenticateTerminate signed command. */
typedef struct {
+ /** Command header. */
+ cmpCommandHeader_t cmdHeader;
+} cmpAuthenticateTerminateCmdSdata_t;
+
+/** AuthenticateTerminate signed command and signature. */
+typedef struct {
+ /** Signed command. */
+ cmpAuthenticateTerminateCmdSdata_t sdata;
+ /** Signature. */
+ cmpMac_t mac;
+} cmpAuthenticateTerminateCmd_t;
+
+/** AuthenticateTerminate command. */
+typedef struct {
+ /** Command. */
+ cmpAuthenticateTerminateCmd_t cmd;
+} cmpCmdAuthenticateTerminate_t;
+
+/** @} */
+
+/** @defgroup MC_CMP_2_0_CMD_AUTHENTICATE_TERMINATE_RSP Response_2_0
+ * @{ */
+
+/** AuthenticateTerminate signed response. */
+typedef struct {
+ /** Response header. */
+ cmpResponseHeader_t rspHeader;
+} cmpAuthenticateTerminateRspSdata_t;
+
+/** AuthenticateTerminate signed response and signature. */
+typedef struct {
+ /** Signed response. */
+ cmpAuthenticateTerminateRspSdata_t sdata;
+ /** Signature. */
+ cmpMac_t mac;
+} cmpTerminateAutenticateRsp_t;
+
+/** AuthenticateTerminate response. */
+typedef struct {
+ /** Response. */
+ cmpTerminateAutenticateRsp_t rsp;
+} cmpRspAuthenticateTerminate_t;
+
+/** @} */
+
+/** @} */
+
+/** @defgroup MC_CMP_2_0_CMD_ROOT_CONT_REGISTER_ACTIVATE \
+ MC_CMP_2_0_CMD_ROOT_CONT_REGISTER_ACTIVATE
+ * @{ */
+
+/** @defgroup MC_CMP_2_0_CMD_ROOT_CONT_REGISTER_ACTIVATE_CMD Command_2_0
+ * @{ */
+
+/** RootContRegisterActivate encrypted data command. */
+typedef struct {
+ /** Root authentication key. */
mcSymmetricKey_t kRootAuth;
} cmpRootRegActMsgEdata_t;
+/** RootContRegisterActivate encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpRootRegActMsgEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootRegActMsgEdata_t))];
} cmpRootRegActCmdEd_t;
+/** RootContRegisterActivate signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
+ /** Rootid. */
mcRootid_t rootid;
+ /** Encrypted and padded data. */
cmpRootRegActCmdEd_t ed;
} cmpRootRegActCmdSdata_t;
+/** RootContRegisterActivate signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpRootRegActCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContRegisterActivateCmd_t;
/** RootContRegisterActivate command. */
typedef struct {
+ /** Command. */
cmpRootContRegisterActivateCmd_t cmd;
} cmpCmdRootContRegisterActivate_t;
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_ROOT_CONT_REGISTER_ACTIVATE_RSP Response_2_0
* @{ */
+/** RootContRegisterActivate encrypted data response. */
typedef struct {
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
} cmpRootRegActRspEdata_t;
+/** RootContRegisterActivate encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpRootRegActRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootRegActRspEdata_t))];
} cmpRootRegActRspEd_t;
+/** RootContRegisterActivate signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpRootRegActRspEd_t ed;
} cmpRootRegActRspSdata_t;
+/** RootContRegisterActivate signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpRootRegActRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContRegisterActivateRsp_t;
/** RooContRegisterActivate response. */
typedef struct {
+ /** Response. */
cmpRootContRegisterActivateRsp_t rsp;
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
} cmpRspRootContRegisterActivate_t;
@@ -314,64 +473,91 @@
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER
+/** @defgroup MC_CMP_2_0_CMD_ROOT_CONT_UNREGISTER \
+ MC_CMP_2_0_CMD_ROOT_CONT_UNREGISTER
* @{ */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_ROOT_CONT_UNREGISTER_CMD Command_2_0
* @{ */
+/** RootContUnregister encrypted data command. */
typedef struct {
+ /** Suid. */
mcSuid_t suid;
+ /** AuthToken container secure object. */
mcSoAuthTokenCont_t soAuthTokenCont;
} cmpRootUnregMsgEdata_t;
+/** RootContUnregister encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpRootUnregMsgEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootUnregMsgEdata_t))];
} cmpRootUnregCmdEd_t;
+/** RootContUnregister signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
+ /** Encrypted and padded data. */
cmpRootUnregCmdEd_t ed;
} cmpRootUnregCmdSdata_t;
+/** RootContUnregister signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpRootUnregCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContUnregisterCmd_t;
/** RootContUnregister command. */
typedef struct {
+ /** Command. */
cmpRootContUnregisterCmd_t cmd;
} cmpCmdRootContUnregister_t;
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_ROOT_CONT_UNREGISTER_RSP Response_2_0
* @{ */
+/** RootContUnregister encrypted data response. */
typedef struct {
+ /** Suid. */
mcSuid_t suid;
} cmpRootUnregRspEdata_t;
+/** RootContUnregister encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpRootUnregRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootUnregRspEdata_t))];
} cmpRootUnregRspEd_t;
+/** RootContUnregister signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpRootUnregRspEd_t ed;
} cmpRootUnregRspSdata_t;
+/** RootContUnregister signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpRootUnregRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContUnregisterRsp_t;
/** RootContUnregister response. */
typedef struct {
+ /** Response. */
cmpRootContUnregisterRsp_t rsp;
+ /** AuthToken container secure object. */
mcSoAuthTokenCont_t soAuthTokenCont;
} cmpRspRootContUnregister_t;
@@ -379,53 +565,73 @@
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT
+/** @defgroup MC_CMP_2_0_CMD_ROOT_CONT_LOCK_BY_ROOT \
+ MC_CMP_2_0_CMD_ROOT_CONT_LOCK_BY_ROOT
* @{ */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_ROOT_CONT_LOCK_BY_ROOT_CMD Command_2_0
* @{ */
+/** RootContLockByRoot signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
} cmpRootLockByRootCmdSdata_t;
+/** RootContLockByRoot signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpRootLockByRootCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContLockByRootCmd_t;
/** RootContLockByRoot command. */
typedef struct {
+ /** Command. */
cmpRootContLockByRootCmd_t cmd;
} cmpCmdRootContLockByRoot_t;
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_ROOT_CONT_LOCK_BY_ROOT_RSP Response_2_0
* @{ */
+/** RootContLockByRoot encrypted data response. */
typedef struct {
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
} cmpRootLockByRootRspEdata_t;
+/** RootContLockByRoot encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpRootLockByRootRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootLockByRootRspEdata_t))];
} cmpRootLockByRootRspEd_t;
+/** RootContLockByRoot signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpRootLockByRootRspEd_t ed;
} cmpRootLockByRootRspSdata_t;
+/** RootContLockByRoot signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpRootLockByRootRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContLockByRootRsp_t;
/** RootContLockByRoot response. */
typedef struct {
+ /** Response. */
cmpRootContLockByRootRsp_t rsp;
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
} cmpRspRootContLockByRoot_t;
@@ -433,53 +639,73 @@
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT
+/** @defgroup MC_CMP_2_0_CMD_ROOT_CONT_UNLOCK_BY_ROOT \
+ MC_CMP_2_0_CMD_ROOT_CONT_UNLOCK_BY_ROOT
* @{ */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_ROOT_CONT_UNLOCK_BY_ROOT_CMD Command_2_0
* @{ */
+/** RootContUnlockByRoot signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
} cmpRootUnlockByRootCmdSdata_t;
+/** RootContUnlockByRoot signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpRootUnlockByRootCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContUnlockByRootCmd_t;
/** RootContUnlockByRoot command. */
typedef struct {
+ /** Command. */
cmpRootContUnlockByRootCmd_t cmd;
} cmpCmdRootContUnlockByRoot_t;
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_ROOT_CONT_UNLOCK_BY_ROOT_RSP Response_2_0
* @{ */
+/** RootContUnlockByRoot encrypted data response. */
typedef struct {
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
} cmpRootUnlockByRootRspEdata_t;
+/** RootContUnlockByRoot encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpRootUnlockByRootRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootUnlockByRootRspEdata_t))];
} cmpRootUnlockByRootRspEd_t;
+/** RootContUnlockByRoot signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpRootUnlockByRootRspEd_t ed;
} cmpRootUnlockByRootRspSdata_t;
+/** RootContUnlockByRoot signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpRootUnlockByRootRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContUnlockByRootRsp_t;
/** RootContUnlockByRoot response. */
typedef struct {
+ /** Response. */
cmpRootContUnlockByRootRsp_t rsp;
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
} cmpRspRootContUnlockByRoot_t;
@@ -487,253 +713,170 @@
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_REGISTER_ACTIVATE \
+ MC_CMP_2_0_CMD_SP_CONT_REGISTER_ACTIVATE
* @{ */
-/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_REGISTER_ACTIVATE_CMD Command_2_0
* @{ */
+/** SpContRegisterActivate encrypted data command. */
typedef struct {
+ /** Sp authentication key. */
mcSymmetricKey_t kSpAuth;
} cmpSpRegActMsgEdata_t;
+/** SpContRegisterActivate encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpSpRegActMsgEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegActMsgEdata_t))];
} cmpSpRegActCmdEd_t;
+/** SpContRegisterActivate signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
mcSpid_t spid;
+ /** Encrypted and padded data. */
cmpSpRegActCmdEd_t ed;
} cmpSpRegActCmdSdata_t;
+/** SpContRegisterActivate signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpSpRegActCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContRegisterActivateCmd_t;
/** SpContRegisterActivate command. */
typedef struct {
+ /** Command. */
cmpSpContRegisterActivateCmd_t cmd;
} cmpCmdSpContRegisterActivate_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_REGISTER_ACTIVATE_RSP Response_2_0
* @{ */
+/** SpContRegisterActivate encrypted data response. */
typedef struct {
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpSpRegActRspEdata_t;
+/** SpContRegisterActivate encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpSpRegActRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegActRspEdata_t))];
} cmpSpRegActRspEd_t;
+/** SpContRegisterActivate signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpSpRegActRspEd_t ed;
} cmpSpRegActRspSdata_t;
+/** SpContRegisterActivate signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpSpRegActRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContRegisterActivateRsp_t;
/** SpContRegisterActivate response. */
typedef struct {
+ /** Response. */
cmpSpContRegisterActivateRsp_t rsp;
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpRspSpContRegisterActivate_t;
-/** @} */
+/** @} */
-/** @} */
+/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_UNREGISTER \
+ MC_CMP_2_0_CMD_SP_CONT_UNREGISTER
* @{ */
-/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_UNREGISTER_CMD Command_2_0
* @{ */
+/** SpContUnregister signed response. */
typedef struct {
- mcSymmetricKey_t kSpAuth;
-} cmpSpRegisterMsgEdata_t;
-
-typedef struct {
- cmpSpRegisterMsgEdata_t edata;
- uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegisterMsgEdata_t))];
-} cmpSpRegisterCmdEd_t;
-
-typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
- mcSpid_t spid;
- cmpSpRegisterCmdEd_t ed;
-} cmpSpRegisterCmdSdata_t;
-
-typedef struct {
- cmpSpRegisterCmdSdata_t sdata;
- cmpMac_t mac;
-} cmpSpContRegisterCmd_t;
-
-/** SpContRegister command. */
-typedef struct {
- cmpSpContRegisterCmd_t cmd;
-} cmpCmdSpContRegister_t;
-
-/** @} */
-
-/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_RSP Response
- * @{ */
-
-typedef struct {
- mcSoRootCont_t soRootCont;
- mcSoSpCont_t soSpCont;
-} cmpSpRegisterRspEdata_t;
-
-typedef struct {
- cmpSpRegisterRspEdata_t edata;
- uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegisterRspEdata_t))];
-} cmpSpRegisterRspEd_t;
-
-typedef struct {
- cmpResponseHeader_t rspHeader;
- cmpSpRegisterRspEd_t ed;
-} cmpSpRegisterRspSdata_t;
-
-typedef struct {
- cmpSpRegisterRspSdata_t sdata;
- cmpMac_t mac;
-} cmpSpContRegisterRsp_t;
-
-/** SpContRegister response. */
-typedef struct {
- cmpSpContRegisterRsp_t rsp;
- mcSoRootCont_t soRootCont;
- mcSoSpCont_t soSpCont;
-} cmpRspSpContRegister_t;
-
-/** @} */
-
-/** @} */
-
-/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE
- * @{ */
-
-/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE_CMD Command
- * @{ */
-
-typedef struct {
- mcSymmetricKey_t kSpAuth;
-} cmpSpActivateMsgEdata_t;
-
-typedef struct {
- cmpSpActivateMsgEdata_t edata;
- uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpActivateMsgEdata_t))];
-} cmpSpActivateCmdEd_t;
-
-typedef struct {
- cmpCommandHeader_t cmdHeader;
- mcSpid_t spid;
- cmpSpActivateCmdEd_t ed;
-} cmpSpActivateCmdSdata_t;
-
-typedef struct {
- cmpSpActivateCmdSdata_t sdata;
- cmpMac_t mac;
-} cmpSpContActivateCmd_t;
-
-/** SpContActivate command. */
-typedef struct {
- cmpSpContActivateCmd_t cmd;
-} cmpCmdSpContActivate_t;
-
-/** @} */
-
-/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE_RSP Response
- * @{ */
-
-typedef struct {
- mcSoSpCont_t soSpCont;
-} cmpSpActivateRspEdata_t;
-
-typedef struct {
- cmpSpActivateRspEdata_t edata;
- uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpActivateRspEdata_t))];
-} cmpSpActivateRspEd_t;
-
-typedef struct {
- cmpResponseHeader_t rspHeader;
- cmpSpActivateRspEd_t ed;
-} cmpSpActivateRspSdata_t;
-
-typedef struct {
- cmpSpActivateRspSdata_t sdata;
- cmpMac_t mac;
-} cmpSpContActivateRsp_t;
-
-/** SpContActivate response. */
-typedef struct {
- cmpSpContActivateRsp_t rsp;
- mcSoSpCont_t soSpCont;
-} cmpRspSpContActivate_t;
-
-/** @} */
-
-/** @} */
-
-/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER
- * @{ */
-
-/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER_CMD Command
- * @{ */
-
-typedef struct {
- cmpCommandHeader_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
} cmpSpContUnregCmdSdata_t;
+/** SpContUnregister signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpSpContUnregCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContUnregisterCmd_t;
/** SpContUnregister command. */
typedef struct {
+ /** Command. */
cmpSpContUnregisterCmd_t cmd;
} cmpCmdSpContUnregister_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_UNREGISTER_RSP Response_2_0
* @{ */
+/** SpContUnregister encrypted data response. */
typedef struct {
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
} cmpSpUnregRspEdata_t;
+/** SpContUnregister encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpSpUnregRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpUnregRspEdata_t))];
} cmpSpUnregRspEd_t;
+/** SpContUnregister signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpSpUnregRspEd_t ed;
} cmpSpContUnregRspSdata_t;
+/** SpContUnregister signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpSpContUnregRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContUnregisterRsp_t;
/** SpContUnregister response. */
typedef struct {
+ /** Response. */
cmpSpContUnregisterRsp_t rsp;
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
} cmpRspSpContUnregister_t;
@@ -741,55 +884,172 @@
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_REGISTER \
+ MC_CMP_2_0_CMD_SP_CONT_REGISTER
* @{ */
-/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_REGISTER_CMD Command_2_0
* @{ */
+/** SpContRegister encrypted data command. */
typedef struct {
+ /** Sp authentication key. */
+ mcSymmetricKey_t kSpAuth;
+} cmpSpRegisterMsgEdata_t;
+
+/** SpContRegister encrypted and padded data command. */
+typedef struct {
+ /** Encrypted data. */
+ cmpSpRegisterMsgEdata_t edata;
+ /** Padding. */
+ uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegisterMsgEdata_t))];
+} cmpSpRegisterCmdEd_t;
+
+/** SpContRegister signed command. */
+typedef struct {
+ /** Command header. */
+ cmpCommandHeader_t cmdHeader;
+ /** Spid. */
+ mcSpid_t spid;
+ /** Encrypted and padded data. */
+ cmpSpRegisterCmdEd_t ed;
+} cmpSpRegisterCmdSdata_t;
+
+/** SpContRegister signed command and signature. */
+typedef struct {
+ /** Signed command. */
+ cmpSpRegisterCmdSdata_t sdata;
+ /** Signature. */
+ cmpMac_t mac;
+} cmpSpContRegisterCmd_t;
+
+/** SpContRegister command. */
+typedef struct {
+ /** Command. */
+ cmpSpContRegisterCmd_t cmd;
+} cmpCmdSpContRegister_t;
+
+/** @} */
+
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_REGISTER_RSP Response_2_0
+ * @{ */
+
+/** SpContRegister encrypted data response. */
+typedef struct {
+ /** Root container secure object. */
+ mcSoRootCont_t soRootCont;
+ /** Sp container secure object. */
+ mcSoSpCont_t soSpCont;
+} cmpSpRegisterRspEdata_t;
+
+/** SpContRegister encrypted and padded data response. */
+typedef struct {
+ /** Encrypted data. */
+ cmpSpRegisterRspEdata_t edata;
+ /** Padding. */
+ uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegisterRspEdata_t))];
+} cmpSpRegisterRspEd_t;
+
+/** SpContRegister signed response. */
+typedef struct {
+ /** Response header. */
+ cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
+ cmpSpRegisterRspEd_t ed;
+} cmpSpRegisterRspSdata_t;
+
+/** SpContRegister signed response and signature. */
+typedef struct {
+ cmpSpRegisterRspSdata_t sdata;
+ /** Signature. */
+ cmpMac_t mac;
+} cmpSpContRegisterRsp_t;
+
+/** SpContRegister response. */
+typedef struct {
+ /** Response. */
+ cmpSpContRegisterRsp_t rsp;
+ /** Root container secure object. */
+ mcSoRootCont_t soRootCont;
+ /** Sp container secure object. */
+ mcSoSpCont_t soSpCont;
+} cmpRspSpContRegister_t;
+
+/** @} */
+
+/** @} */
+
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_LOCK_BY_ROOT \
+ MC_CMP_2_0_CMD_SP_CONT_LOCK_BY_ROOT
+ * @{ */
+
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_LOCK_BY_ROOT_CMD Command_2_0
+ * @{ */
+
+/** SpContLockByRoot signed command. */
+typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
} cmpSpLockByRootCmdSdata_t;
+/** SpContLockByRoot signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpSpLockByRootCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContLockByRootCmd_t;
/** SpContLockByRoot command. */
typedef struct {
+ /** Command. */
cmpSpContLockByRootCmd_t cmd;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpCmdSpContLockByRoot_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_LOCK_BY_ROOT_RSP Response_2_0
* @{ */
+/** SpContLockByRoot encrypted data response. */
typedef struct {
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpSpLockByRootRspEdata_t;
+/** SpContLockByRoot encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpSpLockByRootRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpLockByRootRspEdata_t))];
} cmpSpLockByRootRspEd_t;
+/** SpContLockByRoot signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpSpLockByRootRspEd_t ed;
} cmpSpLockByRootRspSdata_t;
+/** SpContLockByRoot signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpSpLockByRootRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContLockByRootRsp_t;
/** SpContLockByRoot response. */
typedef struct {
+ /** Response. */
cmpSpContLockByRootRsp_t rsp;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpRspSpContLockByRoot_t;
@@ -797,55 +1057,77 @@
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_UNLOCK_BY_ROOT \
+ MC_CMP_2_0_CMD_SP_CONT_UNLOCK_BY_ROOT
* @{ */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_UNLOCK_BY_ROOT_CMD Command_2_0
* @{ */
+/** SpContUnlockByRoot signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
} cmpSpUnlockByRootCmdSdata_t;
+/** SpContUnlockByRoot signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpSpUnlockByRootCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContUnlockByRootCmd_t;
/** SpContUnlockByRoot command. */
typedef struct {
+ /** Command. */
cmpSpContUnlockByRootCmd_t cmd;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpCmdSpContUnlockByRoot_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_UNLOCK_BY_ROOT_RSP Response_2_0
* @{ */
+/** SpContUnlockByRoot encrypted data response. */
typedef struct {
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpSpUnlockByRootRspEdata_t;
+/** SpContUnlockByRoot encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpSpUnlockByRootRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpUnlockByRootRspEdata_t))];
} cmpSpUnlockByRootRspEd_t;
+/** SpContUnlockByRoot signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpSpUnlockByRootRspEd_t ed;
} cmpSpUnlockByRootRspSdata_t;
+/** SpContUnlockByRoot signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpSpUnlockByRootRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContUnlockByRootRsp_t;
/** SpContUnlockByRoot response. */
typedef struct {
+ /** Response. */
cmpSpContUnlockByRootRsp_t rsp;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpRspSpContUnlockByRoot_t;
@@ -853,54 +1135,167 @@
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_ACTIVATE \
+ MC_CMP_2_0_CMD_SP_CONT_ACTIVATE
* @{ */
-/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_ACTIVATE_CMD Command_2_0
* @{ */
+/** SpContActivate encrypted data command. */
typedef struct {
+ /** Sp authentication key. */
+ mcSymmetricKey_t kSpAuth;
+} cmpSpActivateMsgEdata_t;
+
+/** SpContActivate encrypted and padded data command. */
+typedef struct {
+ /** Encrypted data. */
+ cmpSpActivateMsgEdata_t edata;
+ /** Padding. */
+ uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpActivateMsgEdata_t))];
+} cmpSpActivateCmdEd_t;
+
+/** SpContActivate signed command. */
+typedef struct {
+ /** Command header. */
+ cmpCommandHeader_t cmdHeader;
+ /** Spid. */
+ mcSpid_t spid;
+ /** Encrypted and padded data. */
+ cmpSpActivateCmdEd_t ed;
+} cmpSpActivateCmdSdata_t;
+
+/** SpContActivate signed command and signature. */
+typedef struct {
+ /** Signed command. */
+ cmpSpActivateCmdSdata_t sdata;
+ /** Signature. */
+ cmpMac_t mac;
+} cmpSpContActivateCmd_t;
+
+/** SpContActivate command. */
+typedef struct {
+ /** Command. */
+ cmpSpContActivateCmd_t cmd;
+} cmpCmdSpContActivate_t;
+
+/** @} */
+
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_ACTIVATE_RSP Response_2_0
+ * @{ */
+
+/** SpContActivate encrypted data response. */
+typedef struct {
+ /** Sp container secure object. */
+ mcSoSpCont_t soSpCont;
+} cmpSpActivateRspEdata_t;
+
+/** SpContActivate encrypted and padded data response. */
+typedef struct {
+ /** Encrypted data. */
+ cmpSpActivateRspEdata_t edata;
+ /** Padding. */
+ uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpActivateRspEdata_t))];
+} cmpSpActivateRspEd_t;
+
+/** SpContActivate signed response. */
+typedef struct {
+ /** Response header. */
+ cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
+ cmpSpActivateRspEd_t ed;
+} cmpSpActivateRspSdata_t;
+
+/** SpContActivate signed response and signature. */
+typedef struct {
+ /** Signed response. */
+ cmpSpActivateRspSdata_t sdata;
+ /** Signature. */
+ cmpMac_t mac;
+} cmpSpContActivateRsp_t;
+
+/** SpContActivate response. */
+typedef struct {
+ /** Response. */
+ cmpSpContActivateRsp_t rsp;
+ /** Sp container secure object. */
+ mcSoSpCont_t soSpCont;
+} cmpRspSpContActivate_t;
+
+/** @} */
+
+/** @} */
+
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_LOCK_BY_SP \
+ MC_CMP_2_0_CMD_SP_CONT_LOCK_BY_SP
+ * @{ */
+
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_LOCK_BY_SP_CMD Command_2_0
+ * @{ */
+
+/** SpContLockBySp signed command. */
+typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
} cmpSpLockBySpCmdSdata_t;
+/** SpContLockBySp signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpSpLockBySpCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContLockBySpCmd_t;
/** SpContLockBySp command. */
typedef struct {
+ /** Command. */
cmpSpContLockBySpCmd_t cmd;
} cmpCmdSpContLockBySp_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP_RSP Respose
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_LOCK_BY_SP_RSP Response_2_0
* @{ */
+/** SpContLockBySp encrypted data response. */
typedef struct {
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpSpLockBySpRspEdata_t;
+/** SpContLockBySp encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpSpLockBySpRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpLockBySpRspEdata_t))];
} cmpSpLockBySpRspEd_t;
+/** SpContLockBySp signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpSpLockBySpRspEd_t ed;
} cmpSpLockBySpRspSdata_t;
+/** SpContLockBySp signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpSpLockBySpRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContLockBySpRsp_t;
/** SpContLockBySp response. */
typedef struct {
+ /** Response. */
cmpSpContLockBySpRsp_t rsp;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpRspSpContLockBySp_t;
@@ -908,303 +1303,251 @@
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_UNLOCK_BY_SP \
+ MC_CMP_2_0_CMD_SP_CONT_UNLOCK_BY_SP
* @{ */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_UNLOCK_BY_SP_CMD Command_2_0
* @{ */
+/** SpContUnlockBySp signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
} cmpSpUnlockBySpCmdSdata_t;
+/** SpContUnlockBySp signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpSpUnlockBySpCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContUnlockBySpCmd_t;
/** SpContUnlockBySp command. */
typedef struct {
+ /** Command. */
cmpSpContUnlockBySpCmd_t cmd;
} cmpCmdSpContUnlockBySp_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_SP_CONT_UNLOCK_BY_SP_RSP Response_2_0
* @{ */
+/** SpContUnlockBySp encrypted data response. */
typedef struct {
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpSpUnlockBySpRspEdata_t;
+/** SpContUnlockBySp encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpSpUnlockBySpRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpUnlockBySpRspEdata_t))];
} cmpSpUnlockBySpRspEd_t;
+/** SpContUnlockBySp signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpSpUnlockBySpRspEd_t ed;
} cmpSpUnlockBySpRspSdata_t;
+/** SpContUnlockBySp signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpSpUnlockBySpRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContUnlockBySpRsp_t;
/** SpContUnlockBySp response. */
typedef struct {
+ /** Response. */
cmpSpContUnlockBySpRsp_t rsp;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpRspSpContUnlockBySp_t;
-/** @} */
+/** @} */
-/** @} */
+/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_REGISTER_ACTIVATE \
+ MC_CMP_2_0_CMD_TLT_CONT_REGISTER_ACTIVATE
* @{ */
-/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_REGISTER_ACTIVATE_CMD Command_2_0
* @{ */
+/** TltContRegisterActivate encrypted data command. */
typedef struct {
- mcSymmetricKey_t kSpTltEnc;
-} cmpTltRegMsgEdata_t;
-
-typedef struct {
- cmpTltRegMsgEdata_t edata;
- uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegMsgEdata_t))];
-} cmpTltRegCmdEd_t;
-
-typedef struct {
- cmpCommandHeader_t cmdHeader;
- mcSpid_t spid;
- mcUuid_t uuid;
- cmpTltRegCmdEd_t ed;
-} cmpTltRegCmdSdata_t;
-
-typedef struct {
- cmpTltRegCmdSdata_t sdata;
- cmpMac_t mac;
-} cmpTltContRegisterCmd_t;
-
-/** TltContRegister command. */
-typedef struct {
- cmpTltContRegisterCmd_t cmd;
-} cmpCmdTltContRegister_t;
-
-/** @} */
-
-/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_RSP Response
- * @{ */
-
-typedef struct {
- mcSoSpCont_t soSpCont;
- mcSoTltCont_2_0_t soTltCont;
-} cmpTltRegRspEdata_t;
-
-typedef struct {
- cmpTltRegRspEdata_t edata;
- uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegRspEdata_t))];
-} cmpTltRegRspEd_t;
-
-typedef struct {
- cmpResponseHeader_t rspHeader;
- cmpTltRegRspEd_t ed;
-} cmpTltRegRspSdata_t;
-
-typedef struct {
- cmpTltRegRspSdata_t sdata;
- cmpMac_t mac;
-} cmpTltContRegisterRsp_t;
-
-/** TltContRegister response. */
-typedef struct {
- cmpTltContRegisterRsp_t rsp;
- mcSoSpCont_t soSpCont;
- mcSoTltCont_2_0_t soTltCont;
-} cmpRspTltContRegister_t;
-
-/** @} */
-
-/** @} */
-
-/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE
- * @{ */
-
-/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE_CMD Command
- * @{ */
-
-typedef struct {
- cmpCommandHeader_t cmdHeader;
- mcSpid_t spid;
- mcUuid_t uuid;
-} cmpTltActCmdSdata_t;
-
-typedef struct {
- cmpTltActCmdSdata_t sdata;
- cmpMac_t mac;
-} cmpTltContActivateCmd_t;
-
-/** TltContActivate command. */
-typedef struct {
- cmpTltContActivateCmd_t cmd;
- mcSoTltCont_2_0_t soTltCont;
-} cmpCmdTltContActivate_t;
-
-/** @} */
-
-/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE_RSP Response
- * @{ */
-
-typedef struct {
- mcSoTltCont_2_0_t soTltCont;
-} cmpTltActRspEdata_t;
-
-typedef struct {
- cmpTltActRspEdata_t edata;
- uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltActRspEdata_t))];
-} cmpTltActRspEd_t;
-
-typedef struct {
- cmpResponseHeader_t rspHeader;
- cmpTltActRspEd_t ed;
-} cmpTltActRspSdata_t;
-
-typedef struct {
- cmpTltActRspSdata_t sdata;
- cmpMac_t mac;
-} cmpTltContActivateRsp_t;
-
-/** TltContActivate response. */
-typedef struct {
- cmpTltContActivateRsp_t rsp;
- mcSoTltCont_2_0_t soTltCont;
-} cmpRspTltContActivate_t;
-
-/** @} */
-
-/** @} */
-
-/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE
- * @{ */
-
-/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE_CMD Command
- * @{ */
-
-typedef struct {
+ /** Tlt authentication key. */
mcSymmetricKey_t kSpTltEnc;
} cmpTltRegActMsgEdata_t;
+/** TltContRegisterActivate encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpTltRegActMsgEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegActMsgEdata_t))];
} cmpTltRegActCmdEd_t;
+/** TltContRegisterActivate signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Uuid. */
mcUuid_t uuid;
+ /** Encrypted and padded data. */
cmpTltRegActCmdEd_t ed;
} cmpTltRegActCmdSdata_t;
+/** TltContRegisterActivate signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpTltRegActCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContRegisterActivateCmd_t;
/** TltContRegisterActivate command. */
typedef struct {
+ /** Command. */
cmpTltContRegisterActivateCmd_t cmd;
} cmpCmdTltContRegisterActivate_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_REGISTER_ACTIVATE_RSP Response_2_0
* @{ */
+/** TltContRegisterActivate encrypted data response. */
typedef struct {
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
+ /** Tlt container secure object. */
mcSoTltCont_2_0_t soTltCont;
} cmpTltRegActRspEdata_t;
+/** TltContRegisterActivate encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpTltRegActRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegActRspEdata_t))];
} cmpTltRegActRspEd_t;
+/** TltContRegisterActivate signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpTltRegActRspEd_t ed;
} cmpTltRegActRspSdata_t;
+/** TltContRegisterActivate signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpTltRegActRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContRegisterActivateRsp_t;
/** TltContRegisterActivate response. */
typedef struct {
+ /** Response. */
cmpTltContRegisterActivateRsp_t rsp;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
+ /** Tlt container secure object. */
mcSoTltCont_2_0_t soTltCont;
} cmpRspTltContRegisterActivate_t;
-/** @} */
+/** @} */
-/** @} */
+/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_UNREGISTER \
+ MC_CMP_2_0_CMD_TLT_CONT_UNREGISTER
* @{ */
-/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_UNREGISTER_CMD Command_2_0
* @{ */
+/** TltContUnregister signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Uuid. */
mcUuid_t uuid;
} cmpTltUnregCmdSdata_t;
+/** TltContUnregister signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpTltUnregCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContUnregisterCmd_t;
/** TltContUnregister command. */
typedef struct {
+ /** Command. */
cmpTltContUnregisterCmd_t cmd;
} cmpCmdTltContUnregister_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_UNREGISTER_RSP Response_2_0
* @{ */
+/** TltContUnregister encrypted data response. */
typedef struct {
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpTltUnregRspEdata_t;
+/** TltContUnregister encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpTltUnregRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltUnregRspEdata_t))];
} cmpTltUnregRspEd_t;
+/** TltContUnregister signed command. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpTltUnregRspEd_t ed;
} cmpTltUnregRspSdata_t;
+/** TltContUnregister signed command and signature. */
typedef struct {
+ /** Signed response. */
cmpTltUnregRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContUnregisterRsp_t;
/** TltContUnregister response. */
typedef struct {
+ /** Response. */
cmpTltContUnregisterRsp_t rsp;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpRspTltContUnregister_t;
@@ -1212,56 +1555,257 @@
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_REGISTER \
+ MC_CMP_2_0_CMD_TLT_CONT_REGISTER
* @{ */
-/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_REGISTER_CMD Command_2_0
* @{ */
+/** TltContRegister encrypted data command. */
typedef struct {
+ /** Tlt authentication key. */
+ mcSymmetricKey_t kSpTltEnc;
+} cmpTltRegMsgEdata_t;
+
+/** TltContRegister encrypted and padded data command. */
+typedef struct {
+ /** Encrypted data. */
+ cmpTltRegMsgEdata_t edata;
+ /** Padding. */
+ uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegMsgEdata_t))];
+} cmpTltRegCmdEd_t;
+
+/** TltContRegister signed command. */
+typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Uuid. */
+ mcUuid_t uuid;
+ /** Encrypted and padded data. */
+ cmpTltRegCmdEd_t ed;
+} cmpTltRegCmdSdata_t;
+
+/** TltContRegister signed command and signature. */
+typedef struct {
+ /** Signed command. */
+ cmpTltRegCmdSdata_t sdata;
+ /** Signature. */
+ cmpMac_t mac;
+} cmpTltContRegisterCmd_t;
+
+/** TltContRegister command. */
+typedef struct {
+ /** Command. */
+ cmpTltContRegisterCmd_t cmd;
+} cmpCmdTltContRegister_t;
+
+/** @} */
+
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_REGISTER_RSP Response_2_0
+ * @{ */
+
+/** TltContRegister encrypted data response. */
+typedef struct {
+ /** Sp container secure object. */
+ mcSoSpCont_t soSpCont;
+ /** Tlt container secure object. */
+ mcSoTltCont_2_0_t soTltCont;
+} cmpTltRegRspEdata_t;
+
+/** TltContRegister encrypted and padded data response. */
+typedef struct {
+ /** Encrypted data. */
+ cmpTltRegRspEdata_t edata;
+ /** Padding. */
+ uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegRspEdata_t))];
+} cmpTltRegRspEd_t;
+
+/** TltContRegister signed response. */
+typedef struct {
+ /** Response header. */
+ cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
+ cmpTltRegRspEd_t ed;
+} cmpTltRegRspSdata_t;
+
+/** TltContRegister signed response and signature. */
+typedef struct {
+ /** Signed response. */
+ cmpTltRegRspSdata_t sdata;
+ /** Signature. */
+ cmpMac_t mac;
+} cmpTltContRegisterRsp_t;
+
+/** TltContRegister response. */
+typedef struct {
+ /** Response. */
+ cmpTltContRegisterRsp_t rsp;
+ /** Sp container secure object. */
+ mcSoSpCont_t soSpCont;
+ /** Tlt container secure object. */
+ mcSoTltCont_2_0_t soTltCont;
+} cmpRspTltContRegister_t;
+
+/** @} */
+
+/** @} */
+
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_ACTIVATE \
+ MC_CMP_2_0_CMD_TLT_CONT_ACTIVATE
+ * @{ */
+
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_ACTIVATE_CMD Command_2_0
+ * @{ */
+
+/** TltContActivate signed command. */
+typedef struct {
+ /** Command header. */
+ cmpCommandHeader_t cmdHeader;
+ /** Spid. */
+ mcSpid_t spid;
+ /** Uuid. */
+ mcUuid_t uuid;
+} cmpTltActCmdSdata_t;
+
+/** TltContActivate signed command and signature. */
+typedef struct {
+ /** Signed command. */
+ cmpTltActCmdSdata_t sdata;
+ /** Signature. */
+ cmpMac_t mac;
+} cmpTltContActivateCmd_t;
+
+/** TltContActivate command. */
+typedef struct {
+ /** Command. */
+ cmpTltContActivateCmd_t cmd;
+ /** Tlt container secure object. */
+ mcSoTltCont_2_0_t soTltCont;
+} cmpCmdTltContActivate_t;
+
+/** @} */
+
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_ACTIVATE_RSP Response_2_0
+ * @{ */
+
+/** TltContActivate encrypted data response. */
+typedef struct {
+ /** Tlt container secure object. */
+ mcSoTltCont_2_0_t soTltCont;
+} cmpTltActRspEdata_t;
+
+/** TltContActivate encrypted and padded data response. */
+typedef struct {
+ /** Encrypted data. */
+ cmpTltActRspEdata_t edata;
+ /** Padding. */
+ uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltActRspEdata_t))];
+} cmpTltActRspEd_t;
+
+/** TltContActivate signed response. */
+typedef struct {
+ /** Response header. */
+ cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
+ cmpTltActRspEd_t ed;
+} cmpTltActRspSdata_t;
+
+/** TltContActivate signed response and signature. */
+typedef struct {
+ /** Signed response. */
+ cmpTltActRspSdata_t sdata;
+ /** Signature. */
+ cmpMac_t mac;
+} cmpTltContActivateRsp_t;
+
+/** TltContActivate response. */
+typedef struct {
+ /** Response. */
+ cmpTltContActivateRsp_t rsp;
+ /** Tlt container secure object. */
+ mcSoTltCont_2_0_t soTltCont;
+} cmpRspTltContActivate_t;
+
+/** @} */
+
+/** @} */
+
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_LOCK_BY_SP \
+ MC_CMP_2_0_CMD_TLT_CONT_LOCK_BY_SP
+ * @{ */
+
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_LOCK_BY_SP_CMD Command_2_0
+ * @{ */
+
+/** TltContLockBySp signed command. */
+typedef struct {
+ /** Command header. */
+ cmpCommandHeader_t cmdHeader;
+ /** Spid. */
+ mcSpid_t spid;
+ /** Uuid. */
mcUuid_t uuid;
} cmpTltLockBySpCmdSdata_t;
+/** TltContLockBySp signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpTltLockBySpCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContLockBySpCmd_t;
/** TltContLockBySp command. */
typedef struct {
+ /** Command. */
cmpTltContLockBySpCmd_t cmd;
+ /** Tlt container secure object. */
mcSoTltCont_2_0_t soTltCont;
} cmpCmdTltContLockBySp_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_LOCK_BY_SP_RSP Response_2_0
* @{ */
+/** TltContLockBySp encrypted data response. */
typedef struct {
+ /** Tlt container secure object. */
mcSoTltCont_2_0_t soTltCont;
} cmpTltLockBySpRspEdata_t;
+/** TltContLockBySp encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpTltLockBySpRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltLockBySpRspEdata_t))];
} cmpTltLockBySpRspEd_t;
+/** TltContLockBySp signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpTltLockBySpRspEd_t ed;
} cmpTltLockBySpRspSdata_t;
+/** TltContLockBySp signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpTltLockBySpRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContLockBySpRsp_t;
/** TltContLockBySp response. */
typedef struct {
+ /** Response. */
cmpTltContLockBySpRsp_t rsp;
+ /** Tlt container secure object. */
mcSoTltCont_2_0_t soTltCont;
} cmpRspTltContLockBySp_t;
@@ -1269,56 +1813,79 @@
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_UNLOCK_BY_SP \
+ MC_CMP_2_0_CMD_TLT_CONT_UNLOCK_BY_SP
* @{ */
-/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_UNLOCK_BY_SP_CMD Command_2_0
* @{ */
+/** TltContUnlockBySp signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Uuid. */
mcUuid_t uuid;
} cmpTltUnlockBySpCmdSdata_t;
+/** TltContUnlockBySp signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpTltUnlockBySpCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContUnlockBySpCmd_t;
/** TltContUnlockBySp command. */
typedef struct {
+ /** Command. */
cmpTltContUnlockBySpCmd_t cmd;
+ /** Tlt container secure object. */
mcSoTltCont_2_0_t soTltCont;
} cmpCmdTltContUnlockBySp_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_UNLOCK_BY_SP_RSP Response_2_0
* @{ */
+/** TltContUnlockBySp encrypted data response. */
typedef struct {
+ /** Tlt container secure object. */
mcSoTltCont_2_0_t soTltCont;
} cmpTltUnlockBySpRspEdata_t;
+/** TltContUnlockBySp encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpTltUnlockBySpRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltUnlockBySpRspEdata_t))];
} cmpTltUnlockBySpRspEd_t;
+/** TltContUnlockBySp signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data. */
cmpTltUnlockBySpRspEd_t ed;
} cmpTltUnlockBySpRspSdata_t;
+/** TltContUnlockBySp signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpTltUnlockBySpRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContUnlockBySpRsp_t;
/** TltContUnlockBySp response. */
typedef struct {
+ /** Response. */
cmpTltContUnlockBySpRsp_t rsp;
+ /** Tlt container secure object. */
mcSoTltCont_2_0_t soTltCont;
} cmpRspTltContUnlockBySp_t;
@@ -1326,113 +1893,101 @@
/** @} */
-/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_PERSONALIZE \
+ MC_CMP_2_0_CMD_TLT_CONT_PERSONALIZE
* @{ */
-/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE_CMD Command
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_PERSONALIZE_CMD Command_2_0
* @{ */
+/** TltContPersonalize encrypted data command. */
typedef struct {
- cmpCommandHeader_t cmdHeader;
-} cmpAuthenticateTerminateCmdSdata_t;
-
-typedef struct {
- cmpAuthenticateTerminateCmdSdata_t sdata;
- cmpMac_t mac;
-} cmpAuthenticateTerminateCmd_t;
-
-/** AuthenticateTerminate command. */
-typedef struct {
- cmpAuthenticateTerminateCmd_t cmd;
-} cmpCmdAuthenticateTerminate_t;
-
-/** @} */
-
-/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE_RSP Response
- * @{ */
-
-typedef struct {
- cmpResponseHeader_t rspHeader;
-} cmpAuthenticateTerminateRspSdata_t;
-
-typedef struct {
- cmpAuthenticateTerminateRspSdata_t sdata;
- cmpMac_t mac;
-} cmpTerminateAutenticateRsp_t;
-
-/** AuthenticateTerminate response. */
-typedef struct {
- cmpTerminateAutenticateRsp_t rsp;
-} cmpRspAuthenticateTerminate_t;
-
-/** @} */
-
-/** @} */
-
-/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONALIZE
- * @{ */
-
-/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONALIZE_CMD Command
- * @{ */
-
-typedef struct {
+ /** Pid. */
mcPid_t pid;
+ /** Data. */
mcCoDataCont_t persoData;
} cmpTltContPersonalizeCmdEdata_t;
+/** TltContPersonalize encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpTltContPersonalizeCmdEdata_t edata;
- uint8_t padding_[CMP_ED_PADDING(sizeof(cmpTltContPersonalizeCmdEdata_t))];
+ /** Padding. */
+ uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltContPersonalizeCmdEdata_t))];
} cmpTltContPersonalizeCmdEd_t;
+/** TltContPersonalize signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Uuid. */
mcUuid_t uuid;
+ /** Encrypted and padded data size. */
uint32_t edLen;
+ /** Encrypted and padded data. */
cmpTltContPersonalizeCmdEd_t ed;
} cmpTltContPersonalizeCmdSdata_t;
+/** TltContPersonalize signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpTltContPersonalizeCmdSdata_t sdata;
- cmpMac_t mac_;
+ /** Signature. */
+ cmpMac_t mac;
} cmpTltContPersonalizeCmd_t;
/** TltContPersonalize command. */
typedef struct {
+ /** Command. */
cmpTltContPersonalizeCmd_t cmd;
- mcSoTltCont_2_0_t soTltCont_;
+ /** Tlt container secure object. */
+ mcSoTltCont_2_0_t soTltCont;
} cmpCmdTltContPersonalize_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONLIZE_RSP Response
+/** @defgroup MC_CMP_2_0_CMD_TLT_CONT_PERSONLIZE_RSP Response_2_0
* @{ */
+/** TltContPersonalize encrypted data response. */
typedef struct {
+ /** Data container secure object. */
mcSoDataCont_t soDataCont;
} cmpTltContPersonalizeRspEdata_t;
+/** TltContPersonalize encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpTltContPersonalizeRspEdata_t edata;
- uint8_t padding_[CMP_ED_PADDING(sizeof(cmpTltContPersonalizeRspEdata_t))];
+ /** Padding. */
+ uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltContPersonalizeRspEdata_t))];
} cmpTltContPersonalizeRspEd_t;
+/** TltContPersonalize signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Encrypted and padded data size. */
uint32_t edLen;
+ /** Encrypted and padded data. */
cmpTltContPersonalizeRspEd_t ed;
} cmpTltContPersonalizeRspSdata_t;
+/** TltContPersonalize signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpTltContPersonalizeRspSdata_t sdata;
- cmpMac_t mac_;
+ cmpMac_t mac;
} cmpTltContPersonalizeRsp_t;
/** TltContPersonalize response. */
typedef struct {
+ /** Response. */
cmpTltContPersonalizeRsp_t rsp;
- mcSoDataCont_t soDataCont_;
+ /** Data container secure object. */
+ mcSoDataCont_t soDataCont;
} cmpRspTltContPersonalize_t;
/** @} */
diff --git a/common/MobiCore/inc/TlCm/2.0/tlCmApi.h b/common/MobiCore/inc/TlCm/2.0/tlCmApi.h
index ef58d99..d653145 100755
--- a/common/MobiCore/inc/TlCm/2.0/tlCmApi.h
+++ b/common/MobiCore/inc/TlCm/2.0/tlCmApi.h
@@ -1,10 +1,11 @@
-/** @addtogroup CMP
+/** @addtogroup CMP_2_0
* @{
* @file
- * Interface to content management trustlet definitions.
+ * Interface to content management trustlet (TlCm) definitions.
*
- * The CMTL (Content Management Trustlet) is responsible for implementing
- * CMP 2.0 commands and generating approriate CMP 2.0 responses.
+ * The TlCm is responsible for implementing content management protocol (CMP)
+ * 2.0 commands and generating approriate CMP 2.0 responses in the trustlet
+ * control interface (TCI).
*
* Copyright © Trustonic Limited 2013.
*
@@ -40,100 +41,130 @@
#include "TlCm/tlCmApiCommon.h"
#include "TlCm/2.0/cmp.h"
-/**
- * CMP Content Manager message data.
- */
+/** TCI CMP 2.0 messages. */
typedef union {
+ /** Command header. */
cmpCommandHeader_t commandHeader;
+ /** Response header. */
cmpResponseHeader_t responseHeader;
+ /** System command GetVersion. */
cmpCmdGetVersion_t cmpCmdGetVersion;
+ /** System response GetVersion. */
cmpRspGetVersion_t cmpRspGetVersion;
-
- cmpCmdBeginSocAuthentication_t cmpCmdBeginSocAuthentication;
- cmpRspBeginSocAuthentication_t cmpRspBeginSocAuthentication;
-
- cmpCmdBeginRootAuthentication_t cmpCmdBeginRootAuthentication;
- cmpRspBeginRootAuthentication_t cmpRspBeginRootAuthentication;
-
- cmpCmdBeginSpAuthentication_t cmpCmdBeginSpAuthentication;
- cmpRspBeginSpAuthentication_t cmpRspBeginSpAuthentication;
-
- cmpCmdAuthenticate_t cmpCmdAuthenticate;
- cmpRspAuthenticate_t cmpRspAuthenticate;
-
+ /** System command GetSuid. */
+ cmpCmdGetSuid_t cmpCmdGetSuid;
+ /** System response GetSuid. */
+ cmpRspGetSuid_t cmpRspGetSuid;
+ /** System command GenAuthToken. */
cmpCmdGenAuthToken_t cmpCmdGenAuthToken;
+ /** System response GenAuthToken. */
cmpRspGenAuthToken_t cmpRspGenAuthToken;
- cmpCmdRootContRegisterActivate_t cmpCmdRootContRegisterActivate;
- cmpRspRootContRegisterActivate_t cmpRspRootContRegisterActivate;
-
- cmpCmdRootContUnregister_t cmpCmdRootContUnregister;
- cmpRspRootContUnregister_t cmpRspRootContUnregister;
-
- cmpCmdRootContLockByRoot_t cmpCmdRootContLockByRoot;
- cmpRspRootContLockByRoot_t cmpRspRootContLockByRoot;
-
- cmpCmdRootContUnlockByRoot_t cmpCmdRootContUnlockByRoot;
- cmpRspRootContUnlockByRoot_t cmpRspRootContUnlockByRoot;
-
- cmpCmdSpContRegisterActivate_t cmpCmdSpContRegisterActivate;
- cmpRspSpContRegisterActivate_t cmpRspSpContRegisterActivate;
-
- cmpCmdSpContUnregister_t cmpCmdSpContUnregister;
- cmpRspSpContUnregister_t cmpRspSpContUnregister;
-
- cmpCmdSpContLockByRoot_t cmpCmdSpContLockByRoot;
- cmpRspSpContLockByRoot_t cmpRspSpContLockByRoot;
-
- cmpCmdSpContUnlockByRoot_t cmpCmdSpContUnlockByRoot;
- cmpRspSpContUnlockByRoot_t cmpRspSpContUnlockByRoot;
-
- cmpCmdSpContLockBySp_t cmpCmdSpContLockBySp;
- cmpRspSpContLockBySp_t cmpRspSpContLockBySp;
-
- cmpCmdSpContUnlockBySp_t cmpCmdSpContUnlockBySp;
- cmpRspSpContUnlockBySp_t cmpRspSpContUnlockBySp;
-
- cmpCmdTltContRegister_t cmpCmdTltContRegister;
- cmpRspTltContRegister_t cmpRspTltContRegister;
-
- cmpCmdTltContActivate_t cmpCmdTltContActivate;
- cmpRspTltContActivate_t cmpRspTltContActivate;
-
- cmpCmdTltContRegisterActivate_t cmpCmdTltContRegisterActivate;
- cmpRspTltContRegisterActivate_t cmpRspTltContRegisterActivate;
-
- cmpCmdTltContLockBySp_t cmpCmdTltContLockBySp;
- cmpRspTltContLockBySp_t cmpRspTltContLockBySp;
-
- cmpCmdTltContUnlockBySp_t cmpCmdTltContUnlockBySp;
- cmpRspTltContUnlockBySp_t cmpRspTltContUnlockBySp;
-
- cmpCmdTltContUnregister_t cmpCmdTltContUnregister;
- cmpRspTltContUnregister_t cmpRspTltContUnregister;
-
- cmpCmdGetSuid_t cmpCmdGetSuid;
- cmpRspGetSuid_t cmpRspGetSuid;
-
+ /** Authentication command BeginSocAuthentication. */
+ cmpCmdBeginSocAuthentication_t cmpCmdBeginSocAuthentication;
+ /** Authentication response BeginSocAuthentication. */
+ cmpRspBeginSocAuthentication_t cmpRspBeginSocAuthentication;
+ /** Authentication command BeginRootAuthentication. */
+ cmpCmdBeginRootAuthentication_t cmpCmdBeginRootAuthentication;
+ /** Authentication response BeginRootAuthentication. */
+ cmpRspBeginRootAuthentication_t cmpRspBeginRootAuthentication;
+ /** Authentication command BeginSpAuthentication. */
+ cmpCmdBeginSpAuthentication_t cmpCmdBeginSpAuthentication;
+ /** Authentication response BeginSpAuthentication. */
+ cmpRspBeginSpAuthentication_t cmpRspBeginSpAuthentication;
+ /** Authentication command Authenticate. */
+ cmpCmdAuthenticate_t cmpCmdAuthenticate;
+ /** Authentication response Authenticate. */
+ cmpRspAuthenticate_t cmpRspAuthenticate;
+ /** Authentication command AuthenticateTerminate. */
cmpCmdAuthenticateTerminate_t cmpCmdAuthenticateTerminate;
+ /** Authentication response AuthenticateTerminate. */
cmpRspAuthenticateTerminate_t cmpRspAuthenticateTerminate;
- cmpCmdTltContPersonalize_t cmpCmdTltContPersonalize;
- cmpRspTltContPersonalize_t cmpRspTltContPersonalize;
+ /** SoC administrative command RootContRegisterActivate. */
+ cmpCmdRootContRegisterActivate_t cmpCmdRootContRegisterActivate;
+ /** SoC administrative response RootContRegisterActivate. */
+ cmpRspRootContRegisterActivate_t cmpRspRootContRegisterActivate;
+ /** Root administrative command RootContUnregister. */
+ cmpCmdRootContUnregister_t cmpCmdRootContUnregister;
+ /** Root administrative response RootContUnregister. */
+ cmpRspRootContUnregister_t cmpRspRootContUnregister;
+ /** Root administrative command RootContLockByRoot. */
+ cmpCmdRootContLockByRoot_t cmpCmdRootContLockByRoot;
+ /** Root administrative response RootContLockByRoot. */
+ cmpRspRootContLockByRoot_t cmpRspRootContLockByRoot;
+ /** Root administrative command RootContUnlockByRoot. */
+ cmpCmdRootContUnlockByRoot_t cmpCmdRootContUnlockByRoot;
+ /** Root administrative command RootContUnlockByRoot. */
+ cmpRspRootContUnlockByRoot_t cmpRspRootContUnlockByRoot;
+ /** Root administrative command SpContRegisterActivate. */
+ cmpCmdSpContRegisterActivate_t cmpCmdSpContRegisterActivate;
+ /** Root administrative response SpContRegisterActivate. */
+ cmpRspSpContRegisterActivate_t cmpRspSpContRegisterActivate;
+ /** Root administrative command SpContUnregister. */
+ cmpCmdSpContUnregister_t cmpCmdSpContUnregister;
+ /** Root administrative response SpContUnregister. */
+ cmpRspSpContUnregister_t cmpRspSpContUnregister;
+ /** Root administrative command SpContRegister. */
cmpCmdSpContRegister_t cmpCmdSpContRegister;
+ /** Root administrative response SpContRegister. */
cmpRspSpContRegister_t cmpRspSpContRegister;
+ /** Root administrative command SpContLockByRoot. */
+ cmpCmdSpContLockByRoot_t cmpCmdSpContLockByRoot;
+ /** Root administrative response SpContLockByRoot. */
+ cmpRspSpContLockByRoot_t cmpRspSpContLockByRoot;
+ /** Root administrative command SpContUnlockByRoot. */
+ cmpCmdSpContUnlockByRoot_t cmpCmdSpContUnlockByRoot;
+ /** Root administrative response SpContUnlockByRoot. */
+ cmpRspSpContUnlockByRoot_t cmpRspSpContUnlockByRoot;
+ /** Sp administrative command SpContActivate. */
cmpCmdSpContActivate_t cmpCmdSpContActivate;
+ /** Sp administrative response SpContActivate. */
cmpRspSpContActivate_t cmpRspSpContActivate;
+ /** Sp administrative command SpContLockBySp. */
+ cmpCmdSpContLockBySp_t cmpCmdSpContLockBySp;
+ /** Sp administrative response SpContLockBySp. */
+ cmpRspSpContLockBySp_t cmpRspSpContLockBySp;
+ /** Sp administrative command SpContUnlockBySp. */
+ cmpCmdSpContUnlockBySp_t cmpCmdSpContUnlockBySp;
+ /** Sp administrative command SpContUnlockBySp. */
+ cmpRspSpContUnlockBySp_t cmpRspSpContUnlockBySp;
+ /** Sp administrative command TltContRegisterActivate. */
+ cmpCmdTltContRegisterActivate_t cmpCmdTltContRegisterActivate;
+ /** Sp administrative response TltContRegisterActivate. */
+ cmpRspTltContRegisterActivate_t cmpRspTltContRegisterActivate;
+ /** Sp administrative command TltContUnregister. */
+ cmpCmdTltContUnregister_t cmpCmdTltContUnregister;
+ /** Sp administrative response TltContUnregister. */
+ cmpRspTltContUnregister_t cmpRspTltContUnregister;
+ /** Sp administrative command TltContRegister. */
+ cmpCmdTltContRegister_t cmpCmdTltContRegister;
+ /** Sp administrative response TltContRegister. */
+ cmpRspTltContRegister_t cmpRspTltContRegister;
+ /** Sp administrative command TltContActivate. */
+ cmpCmdTltContActivate_t cmpCmdTltContActivate;
+ /** Sp administrative response TltContActivate. */
+ cmpRspTltContActivate_t cmpRspTltContActivate;
+ /** Sp administrative command TltContLockBySp. */
+ cmpCmdTltContLockBySp_t cmpCmdTltContLockBySp;
+ /** Sp administrative response TltContLockBySp. */
+ cmpRspTltContLockBySp_t cmpRspTltContLockBySp;
+ /** Sp administrative command TltContUnlockBySp. */
+ cmpCmdTltContUnlockBySp_t cmpCmdTltContUnlockBySp;
+ /** Sp administrative response TltContUnlockBySp. */
+ cmpRspTltContUnlockBySp_t cmpRspTltContUnlockBySp;
+ /** Sp administrative command TltContPersonalize. */
+ cmpCmdTltContPersonalize_t cmpCmdTltContPersonalize;
+ /** Sp administrative response TltContPersonalize. */
+ cmpRspTltContPersonalize_t cmpRspTltContPersonalize;
} cmpMessage_t;
-/**
- * Overall CMP structure.
- */
+/** TCI CMP 2.0. */
typedef struct {
- /** CMP message. */
+ /** TCI CMP 2.0 messages. */
cmpMessage_t msg;
} cmp_t;
diff --git a/common/MobiCore/inc/TlCm/3.0/cmp.h b/common/MobiCore/inc/TlCm/3.0/cmp.h
index 1712865..8454131 100755
--- a/common/MobiCore/inc/TlCm/3.0/cmp.h
+++ b/common/MobiCore/inc/TlCm/3.0/cmp.h
@@ -1,9 +1,9 @@
/** @addtogroup CMP
* Content Management Protocol Definitions.
*
- * The CMP (Content Management Protocol) is based on the TCI (Trustlet Control
- * Interface) and CMP mapped interfaces. It defines commands/responses with
- * the CMTL (Content Management Trustlet).
+ * The content management protocol (CMP) is based on the trustlet control
+ * interface (TCI) and CMP mapped interfaces. It defines commands/responses
+ * with the content management trustlet (TlCm).
*
* @{
*
@@ -45,111 +45,162 @@
#include "TlCm/cmpCommon.h"
-/** Info of whole mapped memory with NWd */
+/** Info of the whole mapped memory with NWd. */
typedef struct {
+ /** Address of the mapped memory. */
void* addr;
+ /** Size of the mapped memory. */
uint32_t len;
} cmpMapInfo_t;
-/** Info of mapped element from a CMP message with NWd */
+/** Info of the mapped element from a CMP message with NWd. */
typedef struct {
+ /** Offset of the mapped element in the mapped memory. */
uint32_t offset;
+ /** Size of the mapped element. */
uint32_t len;
} cmpMapOffsetInfo_t;
-/**
- * TCI CMP command header.
- */
+/** TCI CMP command header. */
typedef struct {
/** CMP version. */
cmpVersionId_t version;
- /** Command ID. */
+ /** Command id. */
cmpCommandId_t commandId;
- /** Info of whole mapped memory with NWd */
+ /** Info of the whole mapped memory with NWd. */
cmpMapInfo_t mapInfo;
- /** Info of mapped CMP command with NWd */
+ /** Info of the mapped CMP command with NWd. */
cmpMapOffsetInfo_t cmpCmdMapOffsetInfo;
} cmpCommandHeaderTci_t;
-/**
- * TCI CMP response header.
- */
+/** TCI CMP response header. */
typedef struct {
/** CMP version. */
cmpVersionId_t version;
- /** Response ID (must be command ID | RSP_ID_MASK ). */
- cmpResponseId_t responseId;
- /** Required lenght (0 if lenght is enough) of mapped memory with NWd. */
+ /** Response id (must be command id | RSP_ID_MASK ). */
+ cmpResponseId_t responseId;
+ /** Required lenght (return 0 if lenght is enough) of the mapped memory
+ * with NWd. */
uint32_t len;
} cmpResponseHeaderTci_t;
-/** @defgroup MC_CMP_CMD_GET_VERSION
+/** @defgroup MC_CMP_CMD_GET_VERSION_TCI \
+ MC_CMP_CMD_GET_VERSION_TCI
* @{ */
+/** @defgroup MC_CMP_CMD_GET_VERSION_TCI_CMD Command
+ * @{ */
+
+/** GetVersion TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdGetVersionTci_t;
+/** @} */
+
+/** @defgroup MC_CMP_CMD_GET_VERSION_TCI_RSP Response
+ * @{ */
+
+/** GetVersion TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
} cmpRspGetVersionTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_GET_SUID
+/** @} */
+
+/** @defgroup MC_CMP_CMD_GET_SUID_TCI \
+ MC_CMP_CMD_GET_SUID_TCI
* @{ */
+/** @defgroup MC_CMP_CMD_GET_VERSION_TCI_CMD Command
+ * @{ */
+
+/** GetSuid TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdGetSuidTci_t;
+/** @} */
+
+/** @defgroup MC_CMP_CMD_GET_VERSION_TCI_RSP Response
+ * @{ */
+
+/** GetSuid TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
} cmpRspGetSuidTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_GENERATE_AUTH_TOKEN
+/** @} */
+
+/** @defgroup MC_CMP_CMD_GENERATE_AUTH_TOKEN_TCI \
+ MC_CMP_CMD_GENERATE_AUTH_TOKEN_TCI
* @{ */
+/** @defgroup MC_CMP_CMD_GENERATE_AUTH_TOKEN_TCI_CMD Command
+ * @{ */
+
+/** GenAuthToken TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdGenAuthTokenTci_t;
+/** @} */
+
+/** @defgroup MC_CMP_CMD_GENERATE_AUTH_TOKEN_TCI_RSP Response
+ * @{ */
+
+/** GenAuthToken TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeaderTci;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped AuthTokenCont with NWd */
+ /** Offset of the mapped AuthTokenCont with NWd. */
cmpMapOffsetInfo_t cmpAuthTokenContMapOffsetInfo;
} cmpRspGenAuthTokenTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION
+/** @} */
+
+/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION_TCI \
+ MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION_CMD Command
+/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION_TCI_CMD Command
* @{ */
+/** BeginSocAuthentication TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
- /** Offset of mapped AuthTokenCont with NWd */
+ /** Offset of the mapped AuthTokenCont with NWd. */
cmpMapOffsetInfo_t cmpAuthTokenContMapOffsetInfo;
} cmpCmdBeginSocAuthenticationTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION_RSP Response
+/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION_TCI_RSP Response
* @{ */
+/** BeginSocAuthentication TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
} cmpRspBeginSocAuthenticationTci_t;
@@ -157,26 +208,31 @@
/** @} */
-/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION
+/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION_TCI \
+ MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION_CMD Command
+/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION_TCI_CMD Command
* @{ */
+/** BeginRootAuthentication TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
- /** Offset of mapped RootCont with NWd */
+ /** Offset of the mapped RootCont with NWd. */
cmpMapOffsetInfo_t cmpRootContMapOffsetInfo;
} cmpCmdBeginRootAuthenticationTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION_RSP Response
+/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION_TCI_RSP Response
* @{ */
+/** BeginRootAuthentication TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
} cmpRspBeginRootAuthenticationTci_t;
@@ -184,28 +240,33 @@
/** @} */
-/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION
+/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION_TCI \
+ MC_CMP_CMD_BEGIN_SP_AUTHENTICATION_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION_CMD Command
+/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION_TCI_CMD Command
* @{ */
+/** BeginSpAuthentication TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
- /** Offset of mapped RootCont with NWd */
+ /** Offset of the mapped RootCont with NWd. */
cmpMapOffsetInfo_t cmpRootContMapOffsetInfo;
- /** Offset of mapped SpCont with NWd */
+ /** Offset of the mapped SpCont with NWd. */
cmpMapOffsetInfo_t cmpSpContMapOffsetInfo;
} cmpCmdBeginSpAuthenticationTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION_RSP Response
+/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION_TCI_RSP Response
* @{ */
+/** BeginSpAuthentication TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
} cmpRspBeginSpAuthenticationTci_t;
@@ -213,24 +274,29 @@
/** @} */
-/** @defgroup MC_CMP_CMD_AUTHENTICATE
+/** @defgroup MC_CMP_CMD_AUTHENTICATE_TCI \
+ MC_CMP_CMD_AUTHENTICATE_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_AUTHENTICATE_CMD Command
+/** @defgroup MC_CMP_CMD_AUTHENTICATE_TCI_CMD Command
* @{ */
+/** Authenticate TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdAuthenticateTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_AUTHENTICATE_RSP Response
+/** @defgroup MC_CMP_CMD_AUTHENTICATE_TCI_RSP Response
* @{ */
+/** Authenticate TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
} cmpRspAuthenticateTci_t;
@@ -238,24 +304,29 @@
/** @} */
-/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE
+/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE_TCI \
+ MC_CMP_CMD_AUTHENTICATE_TERMINATE_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE_CMD Command
+/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE_TCI_CMD Command
* @{ */
+/** AuthenticateTerminate TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdAuthenticateTerminateTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE_RSP Response
+/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE_TCI_RSP Response
* @{ */
+/** AuthenticateTerminate TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
} cmpRspAuthenticateTerminateTci_t;
@@ -263,26 +334,31 @@
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE
+/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE_TCI \
+ MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE_CMD Command
+/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE_TCI_CMD Command
* @{ */
+/** RootContRegisterActivate TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdRootContRegisterActivateTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE_RSP Response
+/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE_TCI_RSP Response
* @{ */
+/** RootContRegisterActivate TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped RootCont with NWd */
+ /** Offset of the mapped RootCont with NWd. */
cmpMapOffsetInfo_t cmpRootContMapOffsetInfo;
} cmpRspRootContRegisterActivateTci_t;
@@ -290,24 +366,29 @@
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER
+/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER_TCI \
+ MC_CMP_CMD_ROOT_CONT_UNREGISTER_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER_CMD Command
+/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER_TCI_CMD Command
* @{ */
+/** RootContUnregister TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdRootContUnregisterTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER_RSP Response
+/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER_TCI_RSP Response
* @{ */
+/** RootContUnregister TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
} cmpRspRootContUnregisterTci_t;
@@ -315,26 +396,31 @@
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT
+/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT_TCI \
+ MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT_CMD Command
+/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT_TCI_CMD Command
* @{ */
+/** RootContLockByRoot TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdRootContLockByRootTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT_RSP Response
+/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT_TCI_RSP Response
* @{ */
+/** RootContLockByRoot TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped RootCont with NWd */
+ /** Offset of the mapped RootCont with NWd. */
cmpMapOffsetInfo_t cmpRootContMapOffsetInfo;
} cmpRspRootContLockByRootTci_t;
@@ -342,26 +428,31 @@
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT
+/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT_TCI \
+ MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT_CMD Command
+/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT_TCI_CMD Command
* @{ */
+/** RootContUnlockByRoot TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdRootContUnlockByRootTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT_RSP Response
+/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT_TCI_RSP Response
* @{ */
+/** RootContUnlockByRoot TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped RootCont with NWd */
+ /** Offset of the mapped RootCont with NWd. */
cmpMapOffsetInfo_t cmpRootContMapOffsetInfo;
} cmpRspRootContUnlockByRootTci_t;
@@ -369,28 +460,33 @@
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE
+/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE_TCI \
+ MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE_CMD Command
+/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE_TCI_CMD Command
* @{ */
+/** SpContRegisterActivate TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdSpContRegisterActivateTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE_RSP Response
+/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE_TCI_RSP Response
* @{ */
+/** SpContRegisterActivate TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped RootCont with NWd */
+ /** Offset of the mapped RootCont with NWd. */
cmpMapOffsetInfo_t cmpRootContMapOffsetInfo;
- /** Offset of mapped SpCont with NWd */
+ /** Offset of the mapped SpCont with NWd. */
cmpMapOffsetInfo_t cmpSpContMapOffsetInfo;
} cmpRspSpContRegisterActivateTci_t;
@@ -398,26 +494,31 @@
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER
+/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER_TCI \
+ MC_CMP_CMD_SP_CONT_UNREGISTER_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER_CMD Command
+/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER_TCI_CMD Command
* @{ */
+/** SpContUnregister TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdSpContUnregisterTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER_RSP Response
+/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER_TCI_RSP Response
* @{ */
+/** SpContUnregister TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped RootCont with NWd */
+ /** Offset of the mapped RootCont with NWd. */
cmpMapOffsetInfo_t cmpRootContMapOffsetInfo;
} cmpRspSpContUnregisterTci_t;
@@ -425,28 +526,33 @@
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER
+/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_TCI \
+ MC_CMP_CMD_SP_CONT_REGISTER_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_CMD Command
+/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_TCI_CMD Command
* @{ */
+/** SpContRegister TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdSpContRegisterTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_RSP Response
+/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_TCI_RSP Response
* @{ */
+/** SpContRegister TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped RootCont with NWd */
+ /** Offset of the mapped RootCont with NWd. */
cmpMapOffsetInfo_t cmpRootContMapOffsetInfo;
- /** Offset of mapped SpCont with NWd */
+ /** Offset of the mapped SpCont with NWd. */
cmpMapOffsetInfo_t cmpSpContMapOffsetInfo;
} cmpRspSpContRegisterTci_t;
@@ -454,28 +560,33 @@
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT
+/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT_TCI \
+ MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT_CMD Command
+/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT_TCI_CMD Command
* @{ */
+/** SpContLockByRoot TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
- /** Offset of mapped SpCont with NWd */
+ /** Offset of the mapped SpCont with NWd. */
cmpMapOffsetInfo_t cmpSpContMapOffsetInfo;
} cmpCmdSpContLockByRootTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT_RSP Response
+/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT_TCI_RSP Response
* @{ */
+/** SpContLockByRoot TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped SpCont with NWd */
+ /** Offset of the mapped SpCont with NWd. */
cmpMapOffsetInfo_t cmpSpContMapOffsetInfo;
} cmpRspSpContLockByRootTci_t;
@@ -483,28 +594,33 @@
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT
+/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT_TCI \
+ MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT_CMD Command
+/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT_TCI_CMD Command
* @{ */
+/** SpContUnlockByRoot TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
- /** Offset of mapped SpCont with NWd */
+ /** Offset of the mapped SpCont with NWd. */
cmpMapOffsetInfo_t cmpSpContMapOffsetInfo;
} cmpCmdSpContUnlockByRootTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT_RSP Response
+/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT_TCI_RSP Response
* @{ */
+/** SpContUnlockByRoot TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped SpCont with NWd */
+ /** Offset of the mapped SpCont with NWd. */
cmpMapOffsetInfo_t cmpSpContMapOffsetInfo;
} cmpRspSpContUnlockByRootTci_t;
@@ -512,26 +628,31 @@
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE
+/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE_TCI \
+ MC_CMP_CMD_SP_CONT_ACTIVATE_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE_CMD Command
+/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE_TCI_CMD Command
* @{ */
+/** SpContActivate TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdSpContActivateTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE_RSP Response
+/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE_TCI_RSP Response
* @{ */
+/** SpContActivate TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped SpCont with NWd */
+ /** Offset of the mapped SpCont with NWd. */
cmpMapOffsetInfo_t cmpSpContMapOffsetInfo;
} cmpRspSpContActivateTci_t;
@@ -539,26 +660,31 @@
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP
+/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP_TCI \
+ MC_CMP_CMD_SP_CONT_LOCK_BY_SP_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP_CMD Command
+/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP_TCI_CMD Command
* @{ */
+/** SpContLockBySp TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdSpContLockBySpTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP_RSP Response
+/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP_TCI_RSP Response
* @{ */
+/** SpContLockBySp TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped SpCont with NWd */
+ /** Offset of the mapped SpCont with NWd. */
cmpMapOffsetInfo_t cmpSpContMapOffsetInfo;
} cmpRspSpContLockBySpTci_t;
@@ -566,26 +692,31 @@
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP
+/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP_TCI \
+ MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP_CMD Command
+/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP_TCI_CMD Command
* @{ */
+/** SpContUnlockBySp TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdSpContUnlockBySpTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP_RSP Response
+/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP_TCI_RSP Response
* @{ */
+/** SpContUnlockBySp TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped SpCont with NWd */
+ /** Offset of the mapped SpCont with NWd. */
cmpMapOffsetInfo_t cmpSpContMapOffsetInfo;
} cmpRspSpContUnlockBySpTci_t;
@@ -593,28 +724,33 @@
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE
+/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE_TCI \
+ MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE_CMD Command
+/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE_TCI_CMD Command
* @{ */
+/** TltContRegisterActivate TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdTltContRegisterActivateTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE_RSP Response
+/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE_TCI_RSP Response
* @{ */
+/** TltContRegisterActivate TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped SpCont with NWd */
+ /** Offset of the mapped SpCont with NWd. */
cmpMapOffsetInfo_t cmpSpContMapOffsetInfo;
- /** Offset of mapped TltCont with NWd */
+ /** Offset of the mapped TltCont with NWd. */
cmpMapOffsetInfo_t cmpTltContMapOffsetInfo;
} cmpRspTltContRegisterActivateTci_t;
@@ -622,26 +758,31 @@
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER
+/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER_TCI \
+ MC_CMP_CMD_TLT_CONT_UNREGISTER_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER_CMD Command
+/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER_TCI_CMD Command
* @{ */
+/** TltContUnregister TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdTltContUnregisterTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER_RSP Response
+/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER_TCI_RSP Response
* @{ */
+/** TltContUnregister TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped SpCont with NWd */
+ /** Offset of the mapped SpCont with NWd. */
cmpMapOffsetInfo_t cmpSpContMapOffsetInfo;
} cmpRspTltContUnregisterTci_t;
@@ -649,28 +790,33 @@
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER
+/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_TCI \
+ MC_CMP_CMD_TLT_CONT_REGISTER_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_CMD Command
+/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_TCI_CMD Command
* @{ */
+/** TltContRegister TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
} cmpCmdTltContRegisterTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_RSP Response
+/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_TCI_RSP Response
* @{ */
+/** TltContRegister TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped SpCont with NWd */
+ /** Offset of the mapped SpCont with NWd. */
cmpMapOffsetInfo_t cmpSpContMapOffsetInfo;
- /** Offset of mapped TltCont with NWd */
+ /** Offset of the mapped TltCont with NWd. */
cmpMapOffsetInfo_t cmpTltContMapOffsetInfo;
} cmpRspTltContRegisterTci_t;
@@ -678,28 +824,33 @@
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE
+/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE_TCI \
+ MC_CMP_CMD_TLT_CONT_ACTIVATE_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE_CMD Command
+/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE_TCI_CMD Command
* @{ */
+/** TltContActivate TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
- /** Offset of mapped TltCont with NWd */
+ /** Offset of the mapped TltCont with NWd. */
cmpMapOffsetInfo_t cmpTltContMapOffsetInfo;
} cmpCmdTltContActivateTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE_RSP Response
+/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE_TCI_RSP Response
* @{ */
+/** TltContActivate TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped TltCont with NWd */
+ /** Offset of the mapped TltCont with NWd. */
cmpMapOffsetInfo_t cmpTltContMapOffsetInfo;
} cmpRspTltContActivateTci_t;
@@ -707,28 +858,33 @@
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP
+/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP_TCI \
+ MC_CMP_CMD_TLT_CONT_LOCK_BY_SP_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP_CMD Command
+/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP_TCI_CMD Command
* @{ */
+/** TltContLockBySp TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
- /** Offset of mapped TltCont with NWd */
+ /** Offset of the mapped TltCont with NWd. */
cmpMapOffsetInfo_t cmpTltContMapOffsetInfo;
} cmpCmdTltContLockBySpTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP_RSP Response
+/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP_TCI_RSP Response
* @{ */
+/** TltContLockBySp TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped TltCont with NWd */
+ /** Offset of the mapped TltCont with NWd. */
cmpMapOffsetInfo_t cmpTltContMapOffsetInfo;
} cmpRspTltContLockBySpTci_t;
@@ -736,28 +892,33 @@
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP
+/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP_TCI \
+ MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP_CMD Command
+/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP_TCI_CMD Command
* @{ */
+/** TltContUnlockBySp TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
- /** Offset of mapped TltCont with NWd */
+ /** Offset of the mapped TltCont with NWd. */
cmpMapOffsetInfo_t cmpTltContMapOffsetInfo;
} cmpCmdTltContUnlockBySpTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP_RSP Response
+/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP_TCI_RSP Response
* @{ */
+/** TltContUnlockBySp TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped TltCont with NWd */
+ /** Offset of the mapped TltCont with NWd. */
cmpMapOffsetInfo_t cmpTltContMapOffsetInfo;
} cmpRspTltContUnlockBySpTci_t;
@@ -765,28 +926,33 @@
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONALIZE
+/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONALIZE_TCI \
+ MC_CMP_CMD_TLT_CONT_PERSONALIZE_TCI
* @{ */
-/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONALIZE_CMD Command
+/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONALIZE_TCI_CMD Command
* @{ */
+/** TltContPersonalize TCI command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderTci_t cmdHeader;
- /** Offset of mapped TltCont with NWd */
+ /** Offset of the mapped TltCont with NWd. */
cmpMapOffsetInfo_t cmpTltContMapOffsetInfo;
} cmpCmdTltContPersonalizeTci_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONLIZE_RSP Response
+/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONALIZE_TCI_RSP Response
* @{ */
+/** TltContPersonalize TCI response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderTci_t rspHeader;
- /** Offset of mapped CMP response with NWd */
+ /** Offset of the mapped CMP response with NWd. */
cmpMapOffsetInfo_t cmpRspMapOffsetInfo;
- /** Offset of mapped PersonalizeData with NWd */
+ /** Offset of the mapped PersonalizeData with NWd. */
cmpMapOffsetInfo_t cmpTltContPersoMapOffsetInfo;
} cmpRspTltContPersonalizeTci_t;
diff --git a/common/MobiCore/inc/TlCm/3.0/cmpMap.h b/common/MobiCore/inc/TlCm/3.0/cmpMap.h
index 28f6286..05c3e7c 100755
--- a/common/MobiCore/inc/TlCm/3.0/cmpMap.h
+++ b/common/MobiCore/inc/TlCm/3.0/cmpMap.h
@@ -1,9 +1,9 @@
/** @addtogroup CMP
* Content Management Protocol Definitions.
*
- * The CMP (Content Management Protocol) is based on the TCI (Trustlet Control
- * Interface) and CMP mapped interfaces. It defines commands/responses with
- * the CMTL (Content Management Trustlet).
+ * The content management protocol (CMP) is based on the trustlet control
+ * interface (TCI) and CMP mapped interfaces. It defines commands/responses with
+ * the content management trustlet (TlCm).
*
* @{
*
@@ -45,71 +45,91 @@
#include "TlCm/3.0/cmp.h"
-/**
- * Map CMP GetVersion message.
- */
+/** Map CMP GetVersion message. */
typedef union {
+ /** Map CMP command. */
cmpCmdGetVersion_t cmpCmdGetVersion;
+ /** Map CMP response. */
cmpRspGetVersion_t cmpRspGetVersion;
} cmpMapGetVersion_t;
-/**
- * Map CMP GetSuid message.
- */
+/** Map CMP GetSuid message. */
typedef union {
+ /** Map CMP command. */
cmpCmdGetSuid_t cmpCmdGetSuid;
+ /** Map CMP response. */
cmpRspGetSuid_t cmpRspGetSuid;
} cmpMapGetSuid_t;
-/**
- * Map CMP GenAuthToken message.
- */
+/** Map CMP GenAuthToken message. */
typedef union {
+ /** Map CMP command. */
cmpCmdGenAuthToken_t cmpCmdGenAuthToken;
+ /** Map CMP response. */
cmpRspGenAuthToken_t cmpRspGenAuthToken;
} cmpMapGenAuthToken_t;
-/**
- * Map CMP command header.
- */
+/** Map CMP command header. */
typedef struct {
+ /** Command id. */
cmpCommandId_t commandId;
+ /** Size of command. */
uint32_t len;
+ /** Reserved. */
uint32_t reserved;
} cmpCommandHeaderMap_t;
-/**
- * Map CMP response header.
- */
+/** Map CMP response header. */
typedef struct {
+ /** Return id. */
cmpResponseId_t responseId;
+ /** Return code. */
cmpReturnCode_t returnCode;
+ /** Size of response. */
uint32_t len;
+ /** Reserved. */
uint32_t reserved;
} cmpResponseHeaderMap_t;
-/**
- * Map CMP message header.
- */
+/** Map CMP message header. */
typedef union {
+ /** Map CMP command. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Map CMP response. */
cmpResponseHeaderMap_t rspHeader;
} cmpMapHeader_t;
-/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION
+/** CMP error signed response. */
+typedef struct {
+ /** Response header. */
+ cmpResponseHeaderMap_t rspHeader;
+ /** Signature. */
+ cmpMac_t mac;
+} cmpErrorRsp_t;
+
+/** Map CMP error response. */
+typedef struct {
+ /** Response. */
+ cmpErrorRsp_t rsp;
+} cmpMapError_t;
+
+/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION \
+ MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION
* @{ */
/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION_CMD Command
* @{ */
+/** BeginSocAuthentication non signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
} cmpBeginSocAuthenticationCmd_t;
/** BeginSocAuthentication command. */
typedef struct {
+ /** Command. */
cmpBeginSocAuthenticationCmd_t cmd;
- /* AuthTokenCont mapping info is in TCI cmpCmdBeginSocAuthenticationTci */
} cmpCmdBeginSocAuthentication_t;
/** @} */
@@ -117,48 +137,59 @@
/** @defgroup MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION_RSP Response
* @{ */
+/** BeginSocAuthentication signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
+ /** Suid. */
mcSuid_t suid;
+ /** SWd authentication random number. */
cmpRnd8_t rnd1;
} cmpBeginSocAuthenticationRspSdata_t;
+/** BeginSocAuthentication signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpBeginSocAuthenticationRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpBeginSocAuthenticationRsp_t;
/** BeginSocAuthentication response. */
typedef struct {
+ /** Response. */
cmpBeginSocAuthenticationRsp_t rsp;
} cmpRspBeginSocAuthentication_t;
/** @} */
-/**
- * Map CMP BeginSocAuthentication message.
- */
+/** Map CMP BeginSocAuthentication message. */
typedef union {
+ /** Map CMP command. */
cmpCmdBeginSocAuthentication_t cmpCmdBeginSocAuthentication;
+ /** Map CMP response. */
cmpRspBeginSocAuthentication_t cmpRspBeginSocAuthentication;
} cmpMapBeginSocAuthentication_t;
/** @} */
-/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION
+/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION \
+ MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION
* @{ */
/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION_CMD Command
* @{ */
+/** BeginRootAuthentication non signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
} cmpBeginRootAuthenticationCmd_t;
/** BeginRootAuthentication command. */
typedef struct {
+ /** Command. */
cmpBeginRootAuthenticationCmd_t cmd;
- /* RootCont mapping info is in TCI cmpCmdBeginRootAuthenticationTci */
} cmpCmdBeginRootAuthentication_t;
/** @} */
@@ -166,50 +197,61 @@
/** @defgroup MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION_RSP Response
* @{ */
+/** BeginRootAuthentication signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
+ /** Suid. */
mcSuid_t suid;
+ /** SWd authentication random number. */
cmpRnd8_t rnd1;
} cmpBeginRootAuthenticationRspSdata_t;
+/** BeginRootAuthentication signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpBeginRootAuthenticationRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpBeginRootAuthenticationRsp_t;
/** BeginRootAuthentication response. */
typedef struct {
+ /** Response. */
cmpBeginRootAuthenticationRsp_t rsp;
} cmpRspBeginRootAuthentication_t;
/** @} */
-/**
- * Map CMP BeginRootAuthentication message.
- */
+/** Map CMP BeginRootAuthentication message. */
typedef union {
+ /** Map CMP command. */
cmpCmdBeginRootAuthentication_t cmpCmdBeginRootAuthentication;
+ /** Map CMP response. */
cmpRspBeginRootAuthentication_t cmpRspBeginRootAuthentication;
} cmpMapBeginRootAuthentication_t;
/** @} */
-/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION
+/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION \
+ MC_CMP_CMD_BEGIN_SP_AUTHENTICATION
* @{ */
/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION_CMD Command
* @{ */
+/** BeginSpAuthentication non signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
} cmpBeginSpAuthenticationCmd_t;
/** BeginSpAuthentication command. */
typedef struct {
+ /** Command. */
cmpBeginSpAuthenticationCmd_t cmd;
- /* RootCont mapping info is in TCI cmpCmdBeginSpAuthenticationTci */
- /* SpCont mapping info is in TCI cmpCmdBeginSpAuthenticationTci */
} cmpCmdBeginSpAuthentication_t;
/** @} */
@@ -217,67 +259,93 @@
/** @defgroup MC_CMP_CMD_BEGIN_SP_AUTHENTICATION_RSP Response
* @{ */
+/** BeginSpAuthentication signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
+ /** Suid. */
mcSuid_t suid;
+ /** Spid. */
mcSpid_t spid;
+ /** SWd authentication random number. */
cmpRnd8_t rnd1;
} cmpBeginSpAuthenticationRspSdata_t;
+/** BeginSpAuthentication signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpBeginSpAuthenticationRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpBeginSpAuthenticationRsp_t;
/** BeginSpAuthentication response. */
typedef struct {
+ /** Response. */
cmpBeginSpAuthenticationRsp_t rsp;
} cmpRspBeginSpAuthentication_t;
/** @} */
-/**
- * Map CMP BeginSpAuthentication message.
- */
+/** Map CMP BeginSpAuthentication message. */
typedef union {
+ /** Map CMP command. */
cmpCmdBeginSpAuthentication_t cmpCmdBeginSpAuthentication;
+ /** Map CMP response. */
cmpRspBeginSpAuthentication_t cmpRspBeginSpAuthentication;
} cmpMapBeginSpAuthentication_t;
/** @} */
-/** @defgroup MC_CMP_CMD_AUTHENTICATE
+/** @defgroup MC_CMP_CMD_AUTHENTICATE MC_CMP_CMD_AUTHENTICATE
* @{ */
/** @defgroup MC_CMP_CMD_AUTHENTICATE_CMD Command
* @{ */
+/** Authenticate encrypted data command. */
typedef struct {
+ /** NWd authentication random number. */
cmpRnd8_t rnd2;
+ /** Suid. */
mcSuid_t suid;
+ /** EntityId. */
uint32_t entityId;
+ /** SWd authentication random number. */
cmpRnd8_t rnd1;
+ /** NWd authentication random seed. */
cmpRnd32_t k2;
} cmpAuthMsgEdata_t;
+/** Authenticate encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpAuthMsgEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpAuthMsgEdata_t))];
} cmpAuthCmdEd_t;
+/** Authenticate signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Encrypted and padded data size. */
uint32_t edLen;
+ /** Encrypted and padded data. */
cmpAuthCmdEd_t ed;
} cmpAuthCmdSdata_t;
+/** Authenticate signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpAuthCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpAuthenticateCmd_t;
/** Authenticate command. */
typedef struct {
+ /** Command. */
cmpAuthenticateCmd_t cmd;
} cmpCmdAuthenticate_t;
@@ -286,64 +354,88 @@
/** @defgroup MC_CMP_CMD_AUTHENTICATE_RSP Response
* @{ */
+/** Authenticate encrypted data response. */
typedef struct {
+ /** NWd authentication random number. */
cmpRnd8_t rnd2;
+ /** Suid. */
mcSuid_t suid;
+ /** EntityId. */
uint32_t entityId;
+ /** SWd authentication random number. */
cmpRnd8_t rnd1;
+ /** SWd authentication random seed. */
cmpRnd32_t k1;
} cmpAuthRspEdata_t;
+/** Authenticate encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpAuthRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpAuthRspEdata_t))];
} cmpAuthRspEd_t;
+/** Authenticate signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
+ /** Encrypted and padded data size. */
uint32_t edLen;
+ /** Encrypted and padded data. */
cmpAuthRspEd_t ed;
} cmpAuthRspSdata_t;
+/** Authenticate signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpAuthRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpAuthenticateRsp_t;
/** Authenticate response. */
typedef struct {
+ /** Response. */
cmpAuthenticateRsp_t rsp;
} cmpRspAuthenticate_t;
/** @} */
-/**
- * Map CMP Authenticate message.
- */
+/** Map CMP Authenticate message. */
typedef union {
+ /** Map CMP command. */
cmpCmdAuthenticate_t cmpCmdAuthenticate;
+ /** Map CMP response. */
cmpRspAuthenticate_t cmpRspAuthenticate;
} cmpMapAuthenticate_t;
/** @} */
-/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE
+/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE \
+ MC_CMP_CMD_AUTHENTICATE_TERMINATE
* @{ */
/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE_CMD Command
* @{ */
+/** AuthenticateTerminate signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
} cmpAuthenticateTerminateCmdSdata_t;
+/** AuthenticateTerminate signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpAuthenticateTerminateCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpAuthenticateTerminateCmd_t;
/** AuthenticateTerminate command. */
typedef struct {
+ /** Command. */
cmpAuthenticateTerminateCmd_t cmd;
} cmpCmdAuthenticateTerminate_t;
@@ -352,63 +444,82 @@
/** @defgroup MC_CMP_CMD_AUTHENTICATE_TERMINATE_RSP Response
* @{ */
+/** AuthenticateTerminate signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
} cmpAuthenticateTerminateRspSdata_t;
+/** AuthenticateTerminate signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpAuthenticateTerminateRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpAutenticateTerminateRsp_t;
/** AuthenticateTerminate response. */
typedef struct {
+ /** Response. */
cmpAutenticateTerminateRsp_t rsp;
} cmpRspAuthenticateTerminate_t;
/** @} */
-/**
- * Map CMP AuthenticateTerminate message.
- */
+/** Map CMP AuthenticateTerminate message. */
typedef union {
+ /** Map CMP command. */
cmpCmdAuthenticateTerminate_t cmpCmdAuthenticateTerminate;
+ /** Map CMP response. */
cmpRspAuthenticateTerminate_t cmpRspAuthenticateTerminate;
} cmpMapAuthenticateTerminate_t;
/** @} */
-/** @} */
-
-/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE
+/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE \
+ MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE
* @{ */
/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE_CMD Command
* @{ */
+/** RootContRegisterActivate encrypted data command. */
typedef struct {
+ /** Root authentication key. */
mcSymmetricKey_t kRootAuth;
} cmpRootRegActMsgEdata_t;
+/** RootContRegisterActivate encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpRootRegActMsgEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootRegActMsgEdata_t))];
} cmpRootRegActCmdEd_t;
+/** RootContRegisterActivate signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Rootid. */
mcRootid_t rootid;
+ /** Encrypted and padded data size. */
uint32_t edLen;
+ /** Encrypted and padded data. */
cmpRootRegActCmdEd_t ed;
} cmpRootRegActCmdSdata_t;
+/** RootContRegisterActivate signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpRootRegActCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContRegisterActivateCmd_t;
/** RootContRegisterActivate command. */
typedef struct {
+ /** Command. */
cmpRootContRegisterActivateCmd_t cmd;
} cmpCmdRootContRegisterActivate_t;
@@ -417,63 +528,84 @@
/** @defgroup MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE_RSP Response
* @{ */
+/** RootContRegisterActivate signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* RootCont mapping info is in TCI cmpRspRootContRegisterActivateTci */
+ /** Root container secure object size. */
uint32_t soRootContLen;
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
} cmpRootRegActRspSdata_t;
+/** RootContRegisterActivate signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpRootRegActRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContRegisterActivateRsp_t;
/** RooContRegisterActivate response. */
typedef struct {
+ /** Response. */
cmpRootContRegisterActivateRsp_t rsp;
} cmpRspRootContRegisterActivate_t;
/** @} */
-/**
- * Map CMP RootContRegisterActivate message.
- */
+/** Map CMP RootContRegisterActivate message. */
typedef union {
+ /** Map CMP command. */
cmpCmdRootContRegisterActivate_t cmpCmdRootContRegisterActivate;
+ /** Map CMP response. */
cmpRspRootContRegisterActivate_t cmpRspRootContRegisterActivate;
} cmpMapRootContRegisterActivate_t;
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER
+/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER \
+ MC_CMP_CMD_ROOT_CONT_UNREGISTER
* @{ */
/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER_CMD Command
* @{ */
+/** RootContUnregister encrypted data command. */
typedef struct {
+ /** Suid. */
mcSuid_t suid;
} cmpRootUnregMsgEdata_t;
+/** RootContUnregister encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpRootUnregMsgEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootUnregMsgEdata_t))];
} cmpRootUnregCmdEd_t;
+/** RootContUnregister signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Encrypted and padded data size. */
uint32_t edLen;
+ /** Encrypted and padded data. */
cmpRootUnregCmdEd_t ed;
} cmpRootUnregCmdSdata_t;
+/** RootContUnregister signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpRootUnregCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContUnregisterCmd_t;
/** RootContUnregister command. */
typedef struct {
+ /** Command. */
cmpRootContUnregisterCmd_t cmd;
} cmpCmdRootContUnregister_t;
@@ -482,60 +614,80 @@
/** @defgroup MC_CMP_CMD_ROOT_CONT_UNREGISTER_RSP Response
* @{ */
+/** RootContUnregister encrypted data response. */
typedef struct {
+ /** Suid. */
mcSuid_t suid;
} cmpRootUnregRspEdata_t;
+/** RootContUnregister encrypted and padded data response. */
typedef struct {
+ /** Encrypted data. */
cmpRootUnregRspEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpRootUnregRspEdata_t))];
} cmpRootUnregRspEd_t;
+/** RootContUnregister signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
+ /** Encrypted and padded data size. */
uint32_t edLen;
+ /** Encrypted and padded data. */
cmpRootUnregRspEd_t ed;
} cmpRootUnregRspSdata_t;
+/** RootContUnregister signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpRootUnregRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContUnregisterRsp_t;
/** RootContUnregister response. */
typedef struct {
+ /** Response. */
cmpRootContUnregisterRsp_t rsp;
} cmpRspRootContUnregister_t;
/** @} */
-/**
- * Map CMP RootContUnregister message.
- */
+/** Map CMP RootContUnregister message. */
typedef union {
+ /** Map CMP command. */
cmpCmdRootContUnregister_t cmpCmdRootContUnregister;
+ /** Map CMP response. */
cmpRspRootContUnregister_t cmpRspRootContUnregister;
} cmpMapRootContUnregister_t;
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT
+/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT \
+ MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT
* @{ */
/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT_CMD Command
* @{ */
+/** RootContLockByRoot signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
} cmpRootLockByRootCmdSdata_t;
+/** RootContLockByRoot signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpRootLockByRootCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContLockByRootCmd_t;
/** RootContLockByRoot command. */
typedef struct {
+ /** Command. */
cmpRootContLockByRootCmd_t cmd;
} cmpCmdRootContLockByRoot_t;
@@ -544,15 +696,21 @@
/** @defgroup MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT_RSP Response
* @{ */
+/** RootContLockByRoot signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* RootCont mapping info is in TCI cmpRspRootContLockByRootTci */
+ /** Root container secure object size. */
uint32_t soRootContLen;
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
} cmpRootLockByRootRspSdata_t;
+/** RootContLockByRoot signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpRootLockByRootRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContLockByRootRsp_t;
@@ -563,33 +721,40 @@
/** @} */
-/**
- * Map CMP RootContLockByRoot message.
- */
+/** Map CMP RootContLockByRoot message. */
typedef union {
+ /** Map CMP command. */
cmpCmdRootContLockByRoot_t cmpCmdRootContLockByRoot;
+ /** Map CMP response. */
cmpRspRootContLockByRoot_t cmpRspRootContLockByRoot;
} cmpMapRootContLockByRoot_t;
/** @} */
-/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT
+/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT \
+ MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT
* @{ */
/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT_CMD Command
* @{ */
+/** RootContUnlockByRoot signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
} cmpRootUnlockByRootCmdSdata_t;
+/** RootContUnlockByRoot signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpRootUnlockByRootCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContUnlockByRootCmd_t;
/** RootContUnlockByRoot command. */
typedef struct {
+ /** Command. */
cmpRootContUnlockByRootCmd_t cmd;
} cmpCmdRootContUnlockByRoot_t;
@@ -598,64 +763,86 @@
/** @defgroup MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT_RSP Response
* @{ */
+/** RootContUnlockByRoot signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* RootCont mapping info are in TCI cmpRspRootContUnlockByRootTci */
+ /** Root container secure object size. */
uint32_t soRootContLen;
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
} cmpRootUnlockByRootRspSdata_t;
+/** RootContUnlockByRoot signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpRootUnlockByRootRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpRootContUnlockByRootRsp_t;
/** RootContUnlockByRoot response. */
typedef struct {
+ /** Response. */
cmpRootContUnlockByRootRsp_t rsp;
} cmpRspRootContUnlockByRoot_t;
/** @} */
-/**
- * Map CMP RootContUnlockByRoot message.
- */
+/** Map CMP RootContUnlockByRoot message. */
typedef union {
+ /** Map CMP command. */
cmpCmdRootContUnlockByRoot_t cmpCmdRootContUnlockByRoot;
+ /** Map CMP response. */
cmpRspRootContUnlockByRoot_t cmpRspRootContUnlockByRoot;
} cmpMapRootContUnlockByRoot_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE
+/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE \
+ MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE
* @{ */
/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE_CMD Command
* @{ */
+/** SpContRegisterActivate encrypted data command. */
typedef struct {
+ /** Sp authentication key. */
mcSymmetricKey_t kSpAuth;
} cmpSpRegActMsgEdata_t;
+/** SpContRegisterActivate encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpSpRegActMsgEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegActMsgEdata_t))];
} cmpSpRegActCmdEd_t;
+/** SpContRegisterActivate signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Encrypted and padded data size. */
uint32_t edLen;
+ /** Encrypted and padded data. */
cmpSpRegActCmdEd_t ed;
} cmpSpRegActCmdSdata_t;
+/** SpContRegisterActivate signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpSpRegActCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContRegisterActivateCmd_t;
/** SpContRegisterActivate command. */
typedef struct {
+ /** Command. */
cmpSpContRegisterActivateCmd_t cmd;
} cmpCmdSpContRegisterActivate_t;
@@ -664,56 +851,72 @@
/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE_RSP Response
* @{ */
+/** SpContRegisterActivate signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* RootCont mapping info is in TCI cmpRspSpContRegisterActivateTci */
+ /** Root container secure object size. */
uint32_t soRootContLen;
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
- /* SpCont mapping info are in TCI cmpRspSpContRegisterActivateTci */
+ /** Sp container secure object size. */
uint32_t soSpContLen;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpSpRegActRspSdata_t;
+/** SpContRegisterActivate signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpSpRegActRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContRegisterActivateRsp_t;
/** SpContRegisterActivate response. */
typedef struct {
+ /** Response. */
cmpSpContRegisterActivateRsp_t rsp;
} cmpRspSpContRegisterActivate_t;
/** @} */
-/**
- * Map CMP SpContRegisterActivate message.
- */
+/** Map CMP SpContRegisterActivate message. */
typedef union {
+ /** Map CMP command. */
cmpCmdSpContRegisterActivate_t cmpCmdSpContRegisterActivate;
+ /** Map CMP response. */
cmpRspSpContRegisterActivate_t cmpRspSpContRegisterActivate;
} cmpMapSpContRegisterActivate_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER
+/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER \
+ MC_CMP_CMD_SP_CONT_UNREGISTER
* @{ */
/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER_CMD Command
* @{ */
+/** SpContUnregister signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
} cmpSpContUnregCmdSdata_t;
+/** SpContUnregister signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpSpContUnregCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContUnregisterCmd_t;
/** SpContUnregister command. */
typedef struct {
+ /** Command. */
cmpSpContUnregisterCmd_t cmd;
} cmpCmdSpContUnregister_t;
@@ -722,61 +925,86 @@
/** @defgroup MC_CMP_CMD_SP_CONT_UNREGISTER_RSP Response
* @{ */
+/** SpContUnregister signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* RootCont mapping info is in cmpRspSpContUnregisterTci */
+ /** Root container secure object size. */
uint32_t soRootContLen;
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
} cmpSpContUnregRspSdata_t;
+/** SpContUnregister signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpSpContUnregRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContUnregisterRsp_t;
/** SpContUnregister response. */
typedef struct {
+ /** Response. */
cmpSpContUnregisterRsp_t rsp;
} cmpRspSpContUnregister_t;
/** @} */
-/**
- * Map CMP SpContUnregister message.
- */
+/** Map CMP SpContUnregister message. */
typedef union {
+ /** Map CMP command. */
cmpCmdSpContUnregister_t cmpCmdSpContUnregister;
+ /** Map CMP response. */
cmpRspSpContUnregister_t cmpRspSpContUnregister;
} cmpMapSpContUnregister_t;
-/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER
+
+/** @} */
+
+/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER \
+ MC_CMP_CMD_SP_CONT_REGISTER
* @{ */
/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_CMD Command
* @{ */
+/** SpContRegister encrypted data command. */
typedef struct {
+ /** Sp authentication key. */
mcSymmetricKey_t kSpAuth;
} cmpSpRegisterMsgEdata_t;
+/** SpContRegister encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpSpRegisterMsgEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpRegisterMsgEdata_t))];
} cmpSpRegisterCmdEd_t;
+/** SpContRegister signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Encrypted and padded data size. */
uint32_t edLen;
+ /** Encrypted and padded data. */
cmpSpRegisterCmdEd_t ed;
} cmpSpRegisterCmdSdata_t;
+/** SpContRegister signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpSpRegisterCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContRegisterCmd_t;
/** SpContRegister command. */
typedef struct {
+ /** Command. */
cmpSpContRegisterCmd_t cmd;
} cmpCmdSpContRegister_t;
@@ -785,58 +1013,72 @@
/** @defgroup MC_CMP_CMD_SP_CONT_REGISTER_RSP Response
* @{ */
+/** SpContRegister signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* RootCont mapping info is in TCI cmpRspSpContRegisterTci */
+ /** Root container secure object size. */
uint32_t soRootContLen;
+ /** Root container secure object. */
mcSoRootCont_t soRootCont;
- /* SpCont mapping info is in TCI cmpRspSpContRegisterTci */
+ /** Sp container secure object size. */
uint32_t soSpContLen;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpSpRegisterRspSdata_t;
+/** SpContRegister signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpSpRegisterRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContRegisterRsp_t;
/** SpContRegister response. */
typedef struct {
+ /** Response. */
cmpSpContRegisterRsp_t rsp;
} cmpRspSpContRegister_t;
/** @} */
-/**
- * Map CMP SpContRegister message.
- */
+/** Map CMP SpContRegister message. */
typedef union {
+ /** Map CMP command. */
cmpCmdSpContRegister_t cmpCmdSpContRegister;
+ /** Map CMP response. */
cmpRspSpContRegister_t cmpRspSpContRegister;
} cmpMapSpContRegister_t;
/** @} */
-/** @} */
-
-/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT
+/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT \
+ MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT
* @{ */
/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT_CMD Command
* @{ */
+/** SpContLockByRoot signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
} cmpSpLockByRootCmdSdata_t;
+/** SpContLockByRoot signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpSpLockByRootCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContLockByRootCmd_t;
/** SpContLockByRoot command. */
typedef struct {
+ /** Command. */
cmpSpContLockByRootCmd_t cmd;
} cmpCmdSpContLockByRoot_t;
@@ -845,53 +1087,68 @@
/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT_RSP Response
* @{ */
+/** SpContLockByRoot signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* SpCont mapping info is in TCI cmpRspSpContLockByRootTci */
+ /** Sp container secure object size. */
uint32_t soSpContLen;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpSpLockByRootRspSdata_t;
+/** SpContLockByRoot signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpSpLockByRootRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContLockByRootRsp_t;
/** SpContLockByRoot response. */
typedef struct {
+ /** Response. */
cmpSpContLockByRootRsp_t rsp;
} cmpRspSpContLockByRoot_t;
/** @} */
-/**
- * Map CMP SpContLockByRoot message.
- */
+/** Map CMP SpContLockByRoot message. */
typedef union {
+ /** Map CMP command. */
cmpCmdSpContLockByRoot_t cmpCmdSpContLockByRoot;
+ /** Map CMP response. */
cmpRspSpContLockByRoot_t cmpRspSpContLockByRoot;
} cmpMapSpContLockByRoot_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT
+/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT \
+ MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT
* @{ */
/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT_CMD Command
* @{ */
+/** SpContUnlockByRoot signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
} cmpSpUnlockByRootCmdSdata_t;
+/** SpContUnlockByRoot signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpSpUnlockByRootCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContUnlockByRootCmd_t;
/** SpContUnlockByRoot command. */
typedef struct {
+ /** Command. */
cmpSpContUnlockByRootCmd_t cmd;
} cmpCmdSpContUnlockByRoot_t;
@@ -900,64 +1157,86 @@
/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT_RSP Response
* @{ */
+/** SpContUnlockByRoot signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* SpCont mapping info is in TCI cmpRspSpContUnlockByRootTci */
+ /** Sp container secure object size. */
uint32_t soSpContLen;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpSpUnlockByRootRspSdata_t;
+/** SpContUnlockByRoot signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpSpUnlockByRootRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContUnlockByRootRsp_t;
/** SpContUnlockByRoot response. */
typedef struct {
+ /** Response. */
cmpSpContUnlockByRootRsp_t rsp;
} cmpRspSpContUnlockByRoot_t;
/** @} */
-/**
- * Map CMP SpContUnlockByRoot message.
- */
+/** Map CMP SpContUnlockByRoot message. */
typedef union {
+ /** Map CMP command. */
cmpCmdSpContUnlockByRoot_t cmpCmdSpContUnlockByRoot;
+ /** Map CMP response. */
cmpRspSpContUnlockByRoot_t cmpRspSpContUnlockByRoot;
} cmpMapSpContUnlockByRoot_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE
+/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE \
+ MC_CMP_CMD_SP_CONT_ACTIVATE
* @{ */
/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE_CMD Command
* @{ */
+/** SpContActivate encrypted data command. */
typedef struct {
+ /** Sp authentication key. */
mcSymmetricKey_t kSpAuth;
} cmpSpActivateMsgEdata_t;
+/** SpContActivate encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpSpActivateMsgEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpSpActivateMsgEdata_t))];
} cmpSpActivateCmdEd_t;
+/** SpContActivate signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Encrypted and padded data size. */
uint32_t edLen;
+ /** Encrypted and padded data. */
cmpSpActivateCmdEd_t ed;
} cmpSpActivateCmdSdata_t;
+/** SpContActivate signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpSpActivateCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContActivateCmd_t;
/** SpContActivate command. */
typedef struct {
+ /** Command. */
cmpSpContActivateCmd_t cmd;
} cmpCmdSpContActivate_t;
@@ -966,53 +1245,68 @@
/** @defgroup MC_CMP_CMD_SP_CONT_ACTIVATE_RSP Response
* @{ */
+/** SpContActivate signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* SpCont mapping info is in TCI cmpRspSpContActivateTci */
+ /** Sp container secure object size. */
uint32_t soSpContLen;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpSpActivateRspSdata_t;
+/** SpContActivate signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpSpActivateRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContActivateRsp_t;
/** SpContActivate response. */
typedef struct {
+ /** Response. */
cmpSpContActivateRsp_t rsp;
} cmpRspSpContActivate_t;
/** @} */
-/**
- * Map CMP SpContActivate message.
- */
+/** Map CMP SpContActivate message. */
typedef union {
+ /** Map CMP command. */
cmpCmdSpContActivate_t cmpCmdSpContActivate;
+ /** Map CMP response. */
cmpRspSpContActivate_t cmpRspSpContActivate;
} cmpMapSpContActivate_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP
+/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP \
+ MC_CMP_CMD_SP_CONT_LOCK_BY_SP
* @{ */
/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP_CMD Command
* @{ */
+/** SpContLockBySp signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
} cmpSpLockBySpCmdSdata_t;
+/** SpContLockBySp signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpSpLockBySpCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContLockBySpCmd_t;
/** SpContLockBySp command. */
typedef struct {
+ /** Command. */
cmpSpContLockBySpCmd_t cmd;
} cmpCmdSpContLockBySp_t;
@@ -1021,53 +1315,68 @@
/** @defgroup MC_CMP_CMD_SP_CONT_LOCK_BY_SP_RSP Response
* @{ */
+/** SpContLockBySp signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* SpCont mapping info is in TCI cmpRspSpContLockBySpTci */
+ /** Sp container secure object size. */
uint32_t soSpContLen;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpSpLockBySpRspSdata_t;
+/** SpContLockBySp signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpSpLockBySpRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContLockBySpRsp_t;
/** SpContLockBySp response. */
typedef struct {
+ /** Response. */
cmpSpContLockBySpRsp_t rsp;
} cmpRspSpContLockBySp_t;
/** @} */
-/**
- * Map CMP SpContLockBySp message.
- */
+/** Map CMP SpContLockBySp message. */
typedef union {
+ /** Map CMP command. */
cmpCmdSpContLockBySp_t cmpCmdSpContLockBySp;
+ /** Map CMP response. */
cmpRspSpContLockBySp_t cmpRspSpContLockBySp;
} cmpMapSpContLockBySp_t;
/** @} */
-/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP
+/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP \
+ MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP
* @{ */
/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP_CMD Command
* @{ */
+/** SpContUnlockBySp signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
} cmpSpUnlockBySpCmdSdata_t;
+/** SpContUnlockBySp signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpSpUnlockBySpCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContUnlockBySpCmd_t;
/** SpContUnlockBySp command. */
typedef struct {
+ /** Command. */
cmpSpContUnlockBySpCmd_t cmd;
} cmpCmdSpContUnlockBySp_t;
@@ -1076,67 +1385,92 @@
/** @defgroup MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP_RSP Response
* @{ */
+/** SpContUnlockBySp signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* SpCont mapping info is in TCI cmpRspSpContLockBySpTci */
+ /** Sp container secure object size. */
uint32_t soSpContLen;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpSpUnlockBySpRspSdata_t;
+/** SpContUnlockBySp signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpSpUnlockBySpRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpSpContUnlockBySpRsp_t;
/** SpContUnlockBySp response. */
typedef struct {
+ /** Response. */
cmpSpContUnlockBySpRsp_t rsp;
} cmpRspSpContUnlockBySp_t;
/** @} */
-/**
- * Map CMP SpContUnlockBySp message.
- */
+/** Map CMP SpContUnlockBySp message. */
typedef union {
+ /** Map CMP command. */
cmpCmdSpContUnlockBySp_t cmpCmdSpContUnlockBySp;
+ /** Map CMP response. */
cmpRspSpContUnlockBySp_t cmpRspSpContUnlockBySp;
} cmpMapSpContUnlockBySp_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE
+/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE \
+ MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE
* @{ */
/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE_CMD Command
* @{ */
+/** TltContRegisterActivate encrypted data command. */
typedef struct {
+ /** Tlt authentication key. */
mcSymmetricKey_t kSpTltEnc;
} cmpTltRegActMsgEdata_t;
+/** TltContRegisterActivate encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpTltRegActMsgEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegActMsgEdata_t))];
} cmpTltRegActCmdEd_t;
+/** TltContRegisterActivate signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Uuid. */
mcUuid_t uuid;
+ /** Trustlet public key hash. */
mcSha256_t skSpTltEnc;
+ /** Minimum trustlet version supported. */
mcContVersion_t tltVersion;
+ /** Encrypted and padded data size. */
uint32_t edLen;
+ /** Encrypted and padded data. */
cmpTltRegActCmdEd_t ed;
} cmpTltRegActCmdSdata_t;
+/** TltContRegisterActivate signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpTltRegActCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContRegisterActivateCmd_t;
/** TltContRegisterActivate command. */
typedef struct {
+ /** Command. */
cmpTltContRegisterActivateCmd_t cmd;
} cmpCmdTltContRegisterActivate_t;
@@ -1145,18 +1479,24 @@
/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE_RSP Response
* @{ */
+/** TltContRegisterActivate signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* SpCont mapping info is in TCI cmpRspTltContRegisterActivateTci */
+ /** Sp container secure object size. */
uint32_t soSpContLen;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
/* TltCont mapping info is in TCI cmpRspTltContRegisterActivateTci */
uint32_t soTltContLen;
mcSoTltCont_2_1_t soTltCont;
} cmpTltRegActRspSdata_t;
+/** TltContRegisterActivate signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpTltRegActRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContRegisterActivateRsp_t;
@@ -1167,35 +1507,44 @@
/** @} */
-/**
- * Map CMP TltContRegisterActivate message.
- */
+/** Map CMP TltContRegisterActivate message. */
typedef union {
+ /** Map CMP command. */
cmpCmdTltContRegisterActivate_t cmpCmdTltContRegisterActivate;
+ /** Map CMP response. */
cmpRspTltContRegisterActivate_t cmpRspTltContRegisterActivate;
} cmpMapTltContRegisterActivate_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER
+/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER \
+ MC_CMP_CMD_TLT_CONT_UNREGISTER
* @{ */
/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER_CMD Command
* @{ */
+/** TltContUnregister signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Uuid. */
mcUuid_t uuid;
} cmpTltUnregCmdSdata_t;
+/** TltContUnregister signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpTltUnregCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContUnregisterCmd_t;
/** TltContUnregister command. */
typedef struct {
+ /** Command. */
cmpTltContUnregisterCmd_t cmd;
} cmpCmdTltContUnregister_t;
@@ -1204,67 +1553,92 @@
/** @defgroup MC_CMP_CMD_TLT_CONT_UNREGISTER_RSP Response
* @{ */
+/** TltContUnregister signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* SpCont mapping info is in TCI cmpRspTltContUnregisterTci */
+ /** Sp container secure object size. */
uint32_t soSpContLen;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
} cmpTltUnregRspSdata_t;
+/** TltContUnregister signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpTltUnregRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContUnregisterRsp_t;
/** TltContUnregister response. */
typedef struct {
+ /** Response. */
cmpTltContUnregisterRsp_t rsp;
} cmpRspTltContUnregister_t;
/** @} */
-/**
- * Map CMP TltContUnregister message.
- */
+/** Map CMP TltContUnregister message. */
typedef union {
+ /** Map CMP command. */
cmpCmdTltContUnregister_t cmpCmdTltContUnregister;
+ /** Map CMP response. */
cmpRspTltContUnregister_t cmpRspTltContUnregister;
} cmpMapTltContUnregister_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER
+/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER \
+ MC_CMP_CMD_TLT_CONT_REGISTER
* @{ */
/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_CMD Command
* @{ */
+/** TltContRegister encrypted data command. */
typedef struct {
+ /** Tlt authentication key. */
mcSymmetricKey_t kSpTltEnc;
} cmpTltRegMsgEdata_t;
+/** TltContRegister encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpTltRegMsgEdata_t edata;
+ /** Padding. */
uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltRegMsgEdata_t))];
} cmpTltRegCmdEd_t;
+/** TltContRegister signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Uuid. */
mcUuid_t uuid;
+ /** Trustlet public key hash. */
mcSha256_t skSpTltEnc;
+ /** Minimum trustlet version supported. */
mcContVersion_t tltVersion;
+ /** Encrypted and padded data size. */
uint32_t edLen;
+ /** Encrypted and padded data. */
cmpTltRegCmdEd_t ed;
} cmpTltRegCmdSdata_t;
+/** TltContRegister signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpTltRegCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContRegisterCmd_t;
/** TltContRegister command. */
typedef struct {
+ /** Command. */
cmpTltContRegisterCmd_t cmd;
} cmpCmdTltContRegister_t;
@@ -1273,57 +1647,74 @@
/** @defgroup MC_CMP_CMD_TLT_CONT_REGISTER_RSP Response
* @{ */
+/** TltContRegister signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* SpCont mapping info is in TCI cmpRspTltContRegisterTci */
+ /** Sp container secure object size. */
uint32_t soSpContLen;
+ /** Sp container secure object. */
mcSoSpCont_t soSpCont;
- /* TltCont mapping info is in TCI cmpRspTltContRegisterTci_t */
+ /** Tlt container secure object size. */
uint32_t soTltContLen;
+ /** Tlt container secure object. */
mcSoTltCont_2_1_t soTltCont;
} cmpTltRegRspSdata_t;
+/** TltContRegister signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpTltRegRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContRegisterRsp_t;
/** TltContRegister response. */
typedef struct {
+ /** Response. */
cmpTltContRegisterRsp_t rsp;
} cmpRspTltContRegister_t;
/** @} */
-/**
- * Map CMP TltContRegister message.
- */
+/** Map CMP TltContRegister message. */
typedef union {
+ /** Map CMP command. */
cmpCmdTltContRegister_t cmpCmdTltContRegister;
+ /** Map CMP response. */
cmpRspTltContRegister_t cmpRspTltContRegister;
} cmpMapTltContRegister_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE
+/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE \
+ MC_CMP_CMD_TLT_CONT_ACTIVATE
* @{ */
/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE_CMD Command
* @{ */
+/** TltContActivate signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Uuid. */
mcUuid_t uuid;
} cmpTltActCmdSdata_t;
+/** TltContActivate signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpTltActCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContActivateCmd_t;
/** TltContActivate command. */
typedef struct {
+ /** Command. */
cmpTltContActivateCmd_t cmd;
} cmpCmdTltContActivate_t;
@@ -1332,54 +1723,70 @@
/** @defgroup MC_CMP_CMD_TLT_CONT_ACTIVATE_RSP Response
* @{ */
+/** TltContActivate signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* TltCont mapping info is in TCI cmpRspTltContActivateTci */
+ /** Tlt container secure object size. */
uint32_t soTltContLen;
+ /** Tlt container secure object. */
mcSoTltCont_2_1_t soTltCont;
} cmpTltActRspSdata_t;
+/** TltContActivate signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpTltActRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContActivateRsp_t;
/** TltContActivate response. */
typedef struct {
+ /** Response. */
cmpTltContActivateRsp_t rsp;
} cmpRspTltContActivate_t;
/** @} */
-/**
- * Map CMP TltContActivate message.
- */
+/** Map CMP TltContActivate message. */
typedef union {
+ /** Map CMP command. */
cmpCmdTltContActivate_t cmpCmdTltContActivate;
+ /** Map CMP response. */
cmpRspTltContActivate_t cmpRspTltContActivate;
} cmpMapTltContActivate_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP
+/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP \
+ MC_CMP_CMD_TLT_CONT_LOCK_BY_SP
* @{ */
/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP_CMD Command
* @{ */
+/** TltContLockBySp signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Uuid. */
mcUuid_t uuid;
} cmpTltLockBySpCmdSdata_t;
+/** TltContLockBySp signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpTltLockBySpCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContLockBySpCmd_t;
/** TltContLockBySp command. */
typedef struct {
+ /** Command. */
cmpTltContLockBySpCmd_t cmd;
} cmpCmdTltContLockBySp_t;
@@ -1388,54 +1795,70 @@
/** @defgroup MC_CMP_CMD_TLT_CONT_LOCK_BY_SP_RSP Response
* @{ */
+/** TltContLockBySp signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* TltCont mapping info is in TCI cmpRspTltContLockBySpTci */
+ /** Tlt container secure object size. */
uint32_t soTltContLen;
+ /** Tlt container secure object. */
mcSoTltCont_2_1_t soTltCont;
} cmpTltLockBySpRspSdata_t;
+/** TltContLockBySp signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpTltLockBySpRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContLockBySpRsp_t;
/** TltContLockBySp response. */
typedef struct {
+ /** Response. */
cmpTltContLockBySpRsp_t rsp;
} cmpRspTltContLockBySp_t;
/** @} */
-/**
- * Map CMP TltContLockBySp message.
- */
+/** Map CMP TltContLockBySp message. */
typedef union {
+ /** Map CMP command. */
cmpCmdTltContLockBySp_t cmpCmdTltContLockBySp;
+ /** Map CMP response. */
cmpRspTltContLockBySp_t cmpRspTltContLockBySp;
} cmpMapTltContLockBySp_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP
+/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP \
+ MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP
* @{ */
/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP_CMD Command
* @{ */
+/** TltContLockBySp signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Uuid. */
mcUuid_t uuid;
} cmpTltUnlockBySpCmdSdata_t;
+/** TltContLockBySp signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpTltUnlockBySpCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContUnlockBySpCmd_t;
/** TltContUnlockBySp command. */
typedef struct {
+ /** Command. */
cmpTltContUnlockBySpCmd_t cmd;
} cmpCmdTltContUnlockBySp_t;
@@ -1444,61 +1867,84 @@
/** @defgroup MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP_RSP Response
* @{ */
+/** TltContUnlockBySp signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* TltCont mapping info is in TCI cmpRspTltContUnlockBySpTci */
+ /** Tlt container secure object size. */
uint32_t soTltContLen;
+ /** Tlt container secure object. */
mcSoTltCont_2_1_t soTltCont;
} cmpTltUnlockBySpRspSdata_t;
+/** TltContUnlockBySp signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpTltUnlockBySpRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContUnlockBySpRsp_t;
/** TltContUnlockBySp response. */
typedef struct {
+ /** Response. */
cmpTltContUnlockBySpRsp_t rsp;
} cmpRspTltContUnlockBySp_t;
/** @} */
-/**
- * Map CMP TltContUnlockBySp message.
- */
+/** Map CMP TltContUnlockBySp message. */
typedef union {
+ /** Map CMP command. */
cmpCmdTltContUnlockBySp_t cmpCmdTltContUnlockBySp;
+ /** Map CMP response. */
cmpRspTltContUnlockBySp_t cmpRspTltContUnlockBySp;
} cmpMapTltContUnlockBySp_t;
/** @} */
-/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONALIZE
+/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONALIZE \
+ MC_CMP_CMD_TLT_CONT_PERSONALIZE
* @{ */
/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONALIZE_CMD Command
* @{ */
+/** TltContPersonalize encrypted data command. */
typedef struct {
+ /** Data. */
mcCoDataCont_t dataCont;
} cmpTltContPersonalizeCmdEdata_t;
+/** TltContPersonalize encrypted and padded data command. */
typedef struct {
+ /** Encrypted data. */
cmpTltContPersonalizeCmdEdata_t edata;
- uint8_t padding_[CMP_ED_PADDING(sizeof(cmpTltContPersonalizeCmdEdata_t))];
+ /** Padding. */
+ uint8_t padding[CMP_ED_PADDING(sizeof(cmpTltContPersonalizeCmdEdata_t))];
} cmpTltContPersonalizeCmdEd_t;
+/** TltContPersonalize signed command. */
typedef struct {
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Spid. */
mcSpid_t spid;
+ /** Uuid. */
mcUuid_t uuid;
+ /** Pid. */
mcPid_t pid;
+ /** Encrypted and padded data size. */
uint32_t edLen;
+ /** Encrypted and padded data. */
cmpTltContPersonalizeCmdEd_t ed;
} cmpTltContPersonalizeCmdSdata_t;
+/** TltContPersonalize signed command and signature. */
typedef struct {
+ /** Signed command. */
cmpTltContPersonalizeCmdSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContPersonalizeCmd_t;
@@ -1512,125 +1958,168 @@
/** @defgroup MC_CMP_CMD_TLT_CONT_PERSONALIZE_RSP Response
* @{ */
+/** TltContPersonalize signed response. */
typedef struct {
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- /* DataCont mapping info is in TCI cmpRspTltContPersonalizeTci */
+ /** Data container secure object size. */
uint32_t soDataContLen;
+ /** Data container secure object. */
mcSoDataCont_t soDataCont;
} cmpTltContPersonalizeRspSdata_t;
+/** TltContPersonalize signed response and signature. */
typedef struct {
+ /** Signed response. */
cmpTltContPersonalizeRspSdata_t sdata;
+ /** Signature. */
cmpMac_t mac;
} cmpTltContPersonalizeRsp_t;
/** TltContPersonalize response. */
typedef struct {
+ /** Response. */
cmpTltContPersonalizeRsp_t rsp;
} cmpRspTltContPersonalize_t;
/** @} */
-/**
- * Map CMP TltContPersonalize message.
- */
+/** Map CMP TltContPersonalize message. */
typedef union {
+ /** Map CMP command. */
cmpCmdTltContPersonalize_t cmpCmdTltContPersonalize;
+ /** Map CMP response. */
cmpRspTltContPersonalize_t cmpRspTltContPersonalize;
} cmpMapTltContPersonalize_t;
/** @} */
-/**
- * Map CMP Error message.
- */
-typedef struct {
- cmpResponseHeaderMap_t rspHeader;
- cmpMac_t mac;
-} cmpErrorRsp_t;
-
-/** Cmp error response. */
-typedef struct {
- cmpErrorRsp_t rsp;
-} cmpMapError_t;
-
-/**
- * Map CMP message.
- */
+/** Map CMP messages. */
typedef union {
- // Compatible header with CMP message earlier than version 3.0
+ /** Backward compatible command header. */
cmpCommandHeader_t commandHeader;
+ /** Backward compatible response header. */
cmpResponseHeader_t responseHeader;
- // Compatible CMP message earlier than version 3.0
+ /** Backward compatible system command GetVersion. */
cmpCmdGetVersion_t cmpCmdGetVersion;
+ /** Backward compatible system response GetVersion. */
cmpRspGetVersion_t cmpRspGetVersion;
+ /** Backward compatible system command GetSuid. */
cmpCmdGetSuid_t cmpCmdGetSuid;
+ /** Backward compatible system response GetSuid. */
cmpRspGetSuid_t cmpRspGetSuid;
+ /** Backward compatible system command GenAuthToken. */
cmpCmdGenAuthToken_t cmpCmdGenAuthToken;
+ /** Backward compatible system response GenAuthToken. */
cmpRspGenAuthToken_t cmpRspGenAuthToken;
- // CMP message headers
+ /** Command header. */
cmpCommandHeaderMap_t cmdHeader;
+ /** Response header. */
cmpResponseHeaderMap_t rspHeader;
- // CMP error response message
+ /** Error signed response. */
cmpMapError_t cmpMapError;
- // CMP message for authentication
+ /** Authentication command BeginSocAuthentication. */
cmpCmdBeginSocAuthentication_t cmpCmdBeginSocAuthentication;
+ /** Authentication response BeginSocAuthentication. */
cmpRspBeginSocAuthentication_t cmpRspBeginSocAuthentication;
+ /** Authentication command BeginRootAuthentication. */
cmpCmdBeginRootAuthentication_t cmpCmdBeginRootAuthentication;
+ /** Authentication response BeginRootAuthentication. */
cmpRspBeginRootAuthentication_t cmpRspBeginRootAuthentication;
+ /** Authentication command BeginSpAuthentication. */
cmpCmdBeginSpAuthentication_t cmpCmdBeginSpAuthentication;
+ /** Authentication response BeginSpAuthentication. */
cmpRspBeginSpAuthentication_t cmpRspBeginSpAuthentication;
+ /** Authentication command Authenticate. */
cmpCmdAuthenticate_t cmpCmdAuthenticate;
+ /** Authentication response Authenticate. */
cmpRspAuthenticate_t cmpRspAuthenticate;
+ /** Authentication command AuthenticateTerminate. */
cmpCmdAuthenticateTerminate_t cmpCmdAuthenticateTerminate;
+ /** Authentication response AuthenticateTerminate. */
cmpRspAuthenticateTerminate_t cmpRspAuthenticateTerminate;
- // CMP message for SoC administration
+ /** SoC administrative command RootContRegisterActivate. */
cmpCmdRootContRegisterActivate_t cmpCmdRootContRegisterActivate;
+ /** SoC administrative response RootContRegisterActivate. */
cmpRspRootContRegisterActivate_t cmpRspRootContRegisterActivate;
- // CMP message for Root administration
+ /** Root administrative command RootContUnregister. */
cmpCmdRootContUnregister_t cmpCmdRootContUnregister;
+ /** Root administrative response RootContUnregister. */
cmpRspRootContUnregister_t cmpRspRootContUnregister;
+ /** Root administrative command RootContLockByRoot. */
cmpCmdRootContLockByRoot_t cmpCmdRootContLockByRoot;
+ /** Root administrative response RootContLockByRoot. */
cmpRspRootContLockByRoot_t cmpRspRootContLockByRoot;
+ /** Root administrative command RootContUnlockByRoot. */
cmpCmdRootContUnlockByRoot_t cmpCmdRootContUnlockByRoot;
+ /** Root administrative response RootContUnlockByRoot. */
cmpRspRootContUnlockByRoot_t cmpRspRootContUnlockByRoot;
+ /** Root administrative command SpContRegisterActivate. */
cmpCmdSpContRegisterActivate_t cmpCmdSpContRegisterActivate;
+ /** Root administrative response SpContRegisterActivate. */
cmpRspSpContRegisterActivate_t cmpRspSpContRegisterActivate;
+ /** Root administrative command SpContUnregister. */
cmpCmdSpContUnregister_t cmpCmdSpContUnregister;
+ /** Root administrative response SpContUnregister. */
cmpRspSpContUnregister_t cmpRspSpContUnregister;
+ /** Root administrative command SpContRegister. */
cmpCmdSpContRegister_t cmpCmdSpContRegister;
+ /** Root administrative response SpContRegister. */
cmpRspSpContRegister_t cmpRspSpContRegister;
+ /** Root administrative command SpContLockByRoot. */
cmpCmdSpContLockByRoot_t cmpCmdSpContLockByRoot;
+ /** Root administrative response SpContLockByRoot. */
cmpRspSpContLockByRoot_t cmpRspSpContLockByRoot;
+ /** Root administrative command SpContUnlockByRoot. */
cmpCmdSpContUnlockByRoot_t cmpCmdSpContUnlockByRoot;
+ /** Root administrative response SpContUnlockByRoot. */
cmpRspSpContUnlockByRoot_t cmpRspSpContUnlockByRoot;
- // CMP message for Sp administration
+ /** Sp administrative command SpContActivate. */
cmpCmdSpContActivate_t cmpCmdSpContActivate;
+ /** Sp administrative response SpContActivate. */
cmpRspSpContActivate_t cmpRspSpContActivate;
+ /** Sp administrative command SpContLockBySp. */
cmpCmdSpContLockBySp_t cmpCmdSpContLockBySp;
+ /** Sp administrative response SpContLockBySp. */
cmpRspSpContLockBySp_t cmpRspSpContLockBySp;
+ /** Sp administrative command SpContUnlockBySp. */
cmpCmdSpContUnlockBySp_t cmpCmdSpContUnlockBySp;
+ /** Sp administrative response SpContUnlockBySp. */
cmpRspSpContUnlockBySp_t cmpRspSpContUnlockBySp;
+ /** Sp administrative command TltContRegisterActivate. */
cmpCmdTltContRegisterActivate_t cmpCmdTltContRegisterActivate;
+ /** Sp administrative response TltContRegisterActivate. */
cmpRspTltContRegisterActivate_t cmpRspTltContRegisterActivate;
+ /** Sp administrative command TltContUnregister. */
cmpCmdTltContUnregister_t cmpCmdTltContUnregister;
+ /** Sp administrative response TltContUnregister. */
cmpRspTltContUnregister_t cmpRspTltContUnregister;
+ /** Sp administrative command TltContRegister. */
cmpCmdTltContRegister_t cmpCmdTltContRegister;
+ /** Sp administrative response TltContRegister. */
cmpRspTltContRegister_t cmpRspTltContRegister;
+ /** Sp administrative command TltContActivate. */
cmpCmdTltContActivate_t cmpCmdTltContActivate;
+ /** Sp administrative response TltContActivate. */
cmpRspTltContActivate_t cmpRspTltContActivate;
+ /** Sp administrative command TltContLockBySp. */
cmpCmdTltContLockBySp_t cmpCmdTltContLockBySp;
+ /** Sp administrative response TltContLockBySp. */
cmpRspTltContLockBySp_t cmpRspTltContLockBySp;
+ /** Sp administrative command TltContUnlockBySp. */
cmpCmdTltContUnlockBySp_t cmpCmdTltContUnlockBySp;
+ /** Sp administrative response TltContUnlockBySp. */
cmpRspTltContUnlockBySp_t cmpRspTltContUnlockBySp;
+ /** Sp administrative command TltContPersonalize. */
cmpCmdTltContPersonalize_t cmpCmdTltContPersonalize;
+ /** Sp administrative response TltContPersonalize. */
cmpRspTltContPersonalize_t cmpRspTltContPersonalize;
} cmpMap_t;
diff --git a/common/MobiCore/inc/TlCm/3.0/tlCmApi.h b/common/MobiCore/inc/TlCm/3.0/tlCmApi.h
index 173bd20..c66ab5a 100755
--- a/common/MobiCore/inc/TlCm/3.0/tlCmApi.h
+++ b/common/MobiCore/inc/TlCm/3.0/tlCmApi.h
@@ -1,10 +1,11 @@
/** @addtogroup CMP
* @{
* @file
- * Interface to content management trustlet definitions.
+ * Interface to content management trustlet (TlCm) definitions.
*
- * The CMTL (Content Management Trustlet) is responsible for implementing
- * CMP commands and generating approriate CMP responses.
+ * The TlCm is responsible for implementing content management protocol (CMP)
+ * commands and generating approriate CMP responses in the trustlet control
+ * interface (TCI).
*
* Copyright © Trustonic Limited 2013.
*
@@ -41,100 +42,130 @@
#include "TlCm/3.0/cmp.h"
#include "TlCm/3.0/cmpMap.h"
-/**
- * CMP Content Manager message data.
- */
+/** TCI CMP messages. */
typedef union {
+ /** Command header. */
cmpCommandHeaderTci_t commandHeader;
+ /** Response header. */
cmpResponseHeaderTci_t responseHeader;
+ /** System command GetVersion. */
cmpCmdGetVersionTci_t cmpCmdGetVersionTci;
+ /** System response GetVersion. */
cmpRspGetVersionTci_t cmpRspGetVersionTci;
-
+ /** System command GetSuid. */
cmpCmdGetSuidTci_t cmpCmdGetSuidTci;
+ /** System response GetSuid. */
cmpRspGetSuidTci_t cmpRspGetSuidTci;
-
+ /** System command GenAuthToken. */
cmpCmdGenAuthTokenTci_t cmpCmdGenAuthTokenTci;
+ /** System response GenAuthToken. */
cmpRspGenAuthTokenTci_t cmpRspGenAuthTokenTci;
+ /** Authentication command BeginSocAuthentication. */
cmpCmdBeginSocAuthenticationTci_t cmpCmdBeginSocAuthenticationTci;
+ /** Authentication response BeginSocAuthentication. */
cmpRspBeginSocAuthenticationTci_t cmpRspBeginSocAuthenticationTci;
-
+ /** Authentication command BeginRootAuthentication. */
cmpCmdBeginRootAuthenticationTci_t cmpCmdBeginRootAuthenticationTci;
+ /** Authentication response BeginRootAuthentication. */
cmpRspBeginRootAuthenticationTci_t cmpRspBeginRootAuthenticationTci;
-
+ /** Authentication command BeginSpAuthentication. */
cmpCmdBeginSpAuthenticationTci_t cmpCmdBeginSpAuthenticationTci;
+ /** Authentication response BeginSpAuthentication. */
cmpRspBeginSpAuthenticationTci_t cmpRspBeginSpAuthenticationTci;
-
+ /** Authentication command Authenticate. */
cmpCmdAuthenticateTci_t cmpCmdAuthenticateTci;
+ /** Authentication response Authenticate. */
cmpRspAuthenticateTci_t cmpRspAuthenticateTci;
-
+ /** Authentication command AuthenticateTerminate. */
cmpCmdAuthenticateTerminateTci_t cmpCmdAuthenticateTerminateTci;
+ /** Authentication response AuthenticateTerminate. */
cmpRspAuthenticateTerminateTci_t cmpRspAuthenticateTerminateTci;
+ /** SoC administrative command RootContRegisterActivate. */
cmpCmdRootContRegisterActivateTci_t cmpCmdRootContRegisterActivateTci;
+ /** SoC administrative response RootContRegisterActivate. */
cmpRspRootContRegisterActivateTci_t cmpRspRootContRegisterActivateTci;
+ /** Root administrative command RootContUnregister. */
cmpCmdRootContUnregisterTci_t cmpCmdRootContUnregisterTci;
+ /** Root administrative response RootContUnregister. */
cmpRspRootContUnregisterTci_t cmpRspRootContUnregisterTci;
-
+ /** Root administrative command RootContLockByRoot. */
cmpCmdRootContLockByRootTci_t cmpCmdRootContLockByRootTci;
+ /** Root administrative response RootContLockByRoot. */
cmpRspRootContLockByRootTci_t cmpRspRootContLockByRootTci;
-
+ /** Root administrative command RootContUnlockByRoot. */
cmpCmdRootContUnlockByRootTci_t cmpCmdRootContUnlockByRootTci;
+ /** Root administrative command RootContUnlockByRoot. */
cmpRspRootContUnlockByRootTci_t cmpRspRootContUnlockByRootTci;
-
+ /** Root administrative command SpContRegisterActivate. */
cmpCmdSpContRegisterActivateTci_t cmpCmdSpContRegisterActivateTci;
+ /** Root administrative response SpContRegisterActivate. */
cmpRspSpContRegisterActivateTci_t cmpRspSpContRegisterActivateTci;
-
+ /** Root administrative command SpContUnregister. */
cmpCmdSpContUnregisterTci_t cmpCmdSpContUnregisterTci;
+ /** Root administrative response SpContUnregister. */
cmpRspSpContUnregisterTci_t cmpRspSpContUnregisterTci;
-
+ /** Root administrative command SpContRegister. */
cmpCmdSpContRegisterTci_t cmpCmdSpContRegisterTci;
+ /** Root administrative response SpContRegister. */
cmpRspSpContRegisterTci_t cmpRspSpContRegisterTci;
-
+ /** Root administrative command SpContLockByRoot. */
cmpCmdSpContLockByRootTci_t cmpCmdSpContLockByRootTci;
+ /** Root administrative response SpContLockByRoot. */
cmpRspSpContLockByRootTci_t cmpRspSpContLockByRootTci;
-
+ /** Root administrative command SpContUnlockByRoot. */
cmpCmdSpContUnlockByRootTci_t cmpCmdSpContUnlockByRootTci;
+ /** Root administrative response SpContUnlockByRoot. */
cmpRspSpContUnlockByRootTci_t cmpRspSpContUnlockByRootTci;
+ /** Sp administrative command SpContActivate. */
cmpCmdSpContActivateTci_t cmpCmdSpContActivateTci;
+ /** Sp administrative response SpContActivate. */
cmpRspSpContActivateTci_t cmpRspSpContActivateTci;
-
+ /** Sp administrative command SpContLockBySp. */
cmpCmdSpContLockBySpTci_t cmpCmdSpContLockBySpTci;
+ /** Sp administrative response SpContLockBySp. */
cmpRspSpContLockBySpTci_t cmpRspSpContLockBySpTci;
-
+ /** Sp administrative command SpContUnlockBySp. */
cmpCmdSpContUnlockBySpTci_t cmpCmdSpContUnlockBySpTci;
+ /** Sp administrative command SpContUnlockBySp. */
cmpRspSpContUnlockBySpTci_t cmpRspSpContUnlockBySpTci;
-
+ /** Sp administrative command TltContRegisterActivate. */
cmpCmdTltContRegisterActivateTci_t cmpCmdTltContRegisterActivateTci;
+ /** Sp administrative response TltContRegisterActivate. */
cmpRspTltContRegisterActivateTci_t cmpRspTltContRegisterActivateTci;
-
+ /** Sp administrative command TltContUnregister. */
cmpCmdTltContUnregisterTci_t cmpCmdTltContUnregisterTci;
+ /** Sp administrative response TltContUnregister. */
cmpRspTltContUnregisterTci_t cmpRspTltContUnregisterTci;
-
+ /** Sp administrative command TltContRegister. */
cmpCmdTltContRegisterTci_t cmpCmdTltContRegisterTci;
+ /** Sp administrative command TltContRegister. */
cmpRspTltContRegisterTci_t cmpRspTltContRegisterTci;
-
+ /** Sp administrative command TltContActivate. */
cmpCmdTltContActivateTci_t cmpCmdTltContActivateTci;
+ /** Sp administrative command TltContActivate. */
cmpRspTltContActivateTci_t cmpRspTltContActivateTci;
-
+ /** Sp administrative command TltContLockBySp. */
cmpCmdTltContLockBySpTci_t cmpCmdTltContLockBySpTci;
+ /** Sp administrative response TltContLockBySp. */
cmpRspTltContLockBySpTci_t cmpRspTltContLockBySpTci;
-
+ /** Sp administrative command TltContUnlockBySp. */
cmpCmdTltContUnlockBySpTci_t cmpCmdTltContUnlockBySpTci;
+ /** Sp administrative response TltContUnlockBySp. */
cmpRspTltContUnlockBySpTci_t cmpRspTltContUnlockBySpTci;
-
+ /** Sp administrative command TltContPersonalize. */
cmpCmdTltContPersonalizeTci_t cmpCmdTltContPersonalizeTci;
+ /** Sp administrative response TltContPersonalize. */
cmpRspTltContPersonalizeTci_t cmpRspTltContPersonalizeTci;
} cmpMessage_t;
-/**
- * Overall CMP structure.
- */
+/** TCI CMP. */
typedef struct {
- /** CMP message. */
+ /** TCI CMP messages. */
cmpMessage_t msg;
} cmp_t;
diff --git a/common/MobiCore/inc/TlCm/cmpCommon.h b/common/MobiCore/inc/TlCm/cmpCommon.h
index 721c486..7c460ea 100755
--- a/common/MobiCore/inc/TlCm/cmpCommon.h
+++ b/common/MobiCore/inc/TlCm/cmpCommon.h
@@ -1,6 +1,6 @@
-/** @addtogroup CMP
- * Common definitions of content management protocols supported by the content
- * management trustlet.
+/** @addtogroup CMP_COMMON
+ * Common definitions of content management protocols (CMP) supported by the
+ * content management trustlet (TlCm).
*
* @{
*
@@ -45,11 +45,19 @@
#include "mcVersionInfo.h"
#include "version.h"
+/** Minimum TCI CMP 2.0 size. */
#define CMP_SIZE 4388
+/** Default CMP MAP size. */
+#define CMP_MAP_SIZE 2412
+
+/** CMP version id. */
typedef uint32_t cmpVersionId_t;
+/** CMP command id. */
typedef uint32_t cmpCommandId_t;
+/** CMP response id. */
typedef uint32_t cmpResponseId_t;
+/** CMP return code. */
typedef uint32_t cmpReturnCode_t;
/** Responses have bit 31 set */
@@ -58,64 +66,69 @@
#define IS_CMD(cmdId) ((((uint32_t)(cmdId)) & RSP_ID_MASK) == 0)
#define IS_RSP(cmdId) ((((uint32_t)(cmdId)) & RSP_ID_MASK) == RSP_ID_MASK)
-/**
- * CMP command header.
- */
+/** CMP command header. */
typedef struct {
- /** Command ID. */
+ /** Command id. */
cmpCommandId_t commandId;
} cmpCommandHeader_t;
-/**
- * CMP response header.
- */
+/** CMP response header. */
typedef struct {
- /** Response ID (must be command ID | RSP_ID_MASK ). */
- cmpResponseId_t responseId;
- /** Return code of command. */
- cmpReturnCode_t returnCode;
+ /** Response id (must be command id | RSP_ID_MASK ). */
+ cmpResponseId_t responseId;
+ /** Return code. */
+ cmpReturnCode_t returnCode;
} cmpResponseHeader_t;
-/** Total number of bytes used for message authentication code (MAC). */
-#define CMP_MAC_SIZE 32 // HMAC-SHA256
+/** Total number of bytes used for HMAC-SHA256 message authentication code. */
+#define CMP_MAC_SIZE 32
/** Message authentication code. */
typedef struct {
+ /** MAC value. */
uint8_t mac[CMP_MAC_SIZE];
} cmpMac_t;
/** 64-bit random number. */
typedef struct {
+ /** Random number value. */
uint8_t data[8];
} cmpRnd8_t;
/** 256-bit random number. */
typedef struct {
+ /** Random number value. */
uint8_t data[32];
} cmpRnd32_t;
-/** @defgroup MC_CMP_CMD_GET_VERSION
+/** @defgroup MC_CMP_CMD_GET_VERSION MC_CMP_CMD_GET_VERSION
* @{ */
/** Version tags. */
typedef enum {
- CMP_VERSION_TAG1 = 0x00000001, // Deprecated.
+ /** Version tag deprecated. */
+ CMP_VERSION_TAG1 = 0x00000001,
+ /** Version tag. */
CMP_VERSION_TAG2 = 0x00000002,
} cmpVersionTag_t;
-/** Version data for version tag 1. */
+/** Version data info for deprecated version tag. */
typedef struct {
+ /** Version data value. */
cmpVersionId_t number;
} cmpVersionData1_t;
-/** Version data for version tag 2. */
+/** Version data info. */
typedef struct {
+ /** Version data value. */
mcVersionInfo_t versionInfo;
} cmpVersionData2_t;
-/** Version data. */
+/** Version data infos. */
typedef union {
+ /** Version data info deprecated. */
cmpVersionData1_t versionData1;
+ /** Version data info. */
cmpVersionData2_t versionData2;
} cmpVersionData_t;
@@ -124,6 +137,7 @@
/** GetVersion command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
} cmpCmdGetVersion_t;
@@ -132,10 +146,13 @@
/** @defgroup MC_CMP_CMD_GET_VERSION_RSP Response
* @{ */
-/** GetSuid response. */
+/** GetVersion response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Version tag. */
cmpVersionTag_t tag;
+ /** Version data info. */
cmpVersionData_t data;
} cmpRspGetVersion_t;
@@ -143,7 +160,7 @@
/** @} */
-/** @defgroup MC_CMP_CMD_GET_SUID
+/** @defgroup MC_CMP_CMD_GET_SUID MC_CMP_CMD_GET_SUID
* @{ */
/** @defgroup MC_CMP_CMD_GET_SUID_CMD Command
@@ -151,6 +168,7 @@
/** GetSuid command. */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
} cmpCmdGetSuid_t;
@@ -161,7 +179,9 @@
/** GetSuid response. */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
+ /** Suid. */
mcSuid_t suid;
} cmpRspGetSuid_t;
@@ -169,14 +189,15 @@
/** @} */
-/** @defgroup MC_CMP_CMD_GENERATE_AUTH_TOKEN
+/** @defgroup MC_CMP_CMD_GENERATE_AUTH_TOKEN MC_CMP_CMD_GENERATE_AUTH_TOKEN
* @{ */
/** Block size of the encryption algorithm used for secure messaging. */
-#define CMP_MSG_CRYPTO_BLOCK_SIZE 16
+#define CMP_MSG_CRYPTO_BLOCK_SIZE 16
/** Total number of padding bytes required to encrypt data of given size. */
-#define CMP_ED_PADDING(netsize) (CMP_MSG_CRYPTO_BLOCK_SIZE - (netsize) % CMP_MSG_CRYPTO_BLOCK_SIZE)
+#define CMP_ED_PADDING(netsize) \
+ (CMP_MSG_CRYPTO_BLOCK_SIZE - (netsize) % CMP_MSG_CRYPTO_BLOCK_SIZE)
/** Total number of bytes used for PSS signature in GENERATE AUTH TOKEN command. */
#define CMP_GEN_AUTH_TOKEN_PSS_SIZE 256
@@ -185,19 +206,26 @@
* @{ */
typedef struct {
+ /** Command header. */
cmpCommandHeader_t cmdHeader;
+ /** Suid. */
mcSuid_t suid;
+ /** Authentication key. */
mcSymmetricKey_t kSocAuth;
+ /** Key id. */
uint32_t kid;
} cmpGenAuthTokenCmdSdata_t;
typedef struct {
+ /** Signed data. */
cmpGenAuthTokenCmdSdata_t sdata;
+ /** Signature. */
uint8_t pssSignature[CMP_GEN_AUTH_TOKEN_PSS_SIZE];
} cmpGenAuthTokenCmd_t;
/** GenAuthToken command. */
typedef struct {
+ /** Command. */
cmpGenAuthTokenCmd_t cmd;
} cmpCmdGenAuthToken_t;
@@ -207,13 +235,15 @@
* @{ */
typedef struct {
+ /** Response header. */
cmpResponseHeader_t rspHeader;
- // No MAC.
} cmpGenAuthTokenRsp_t;
/** GenAuthToken response. */
typedef struct {
+ /** Response. */
cmpGenAuthTokenRsp_t rsp;
+ /** AuthToken container. */
mcSoAuthTokenCont_t soAuthCont;
} cmpRspGenAuthToken_t;
diff --git a/common/MobiCore/inc/TlCm/tlCmApiCommon.h b/common/MobiCore/inc/TlCm/tlCmApiCommon.h
index 5e6d5df..b526edd 100755
--- a/common/MobiCore/inc/TlCm/tlCmApiCommon.h
+++ b/common/MobiCore/inc/TlCm/tlCmApiCommon.h
@@ -1,10 +1,10 @@
-/** @addtogroup CMP
+/** @addtogroup CMP_COMMON
* @{
* @file
- * Common interface definitions to content management trustlet.
+ * Common interface definitions to content management trustlet (TlCm).
*
- * The CMTL (Content Management Trustlet) is responsible for implementing
- * CMP commands and generating approriate CMP responses.
+ * The TlCm is responsible for implementing content management protocol (CMP)
+ * commands and generating approriate CMP responses.
*
* Copyright © Trustonic Limited 2013.
*
@@ -39,9 +39,8 @@
#include "tlCmError.h"
-/** TlCm command ids.
- * List of all commands supported by TlCm.
- * @note All command ids must be in range 0 to 0x7FFFFFFF.
+/** TlCm command ids supported.
+ * @note All command ids must be in range 0 to 0x1D.
*/
//lint -esym(756, cmpCommands_t) cmpCommands_t type by itself not used.
typedef enum cmpCommands_t {
@@ -77,9 +76,7 @@
MC_CMP_CMD_LAST_ = MC_CMP_CMD_AUTHENTICATE_TERMINATE,
} cmpCommands_t;
-/**
- * TlCm exit code: TlCm exited with error.
- */
+/** TlCm exit code: TlCm exited with error. */
#define EXIT_ERROR ((uint32_t)(-1))
#endif // TL_CM_API_COMMON_H_
diff --git a/common/MobiCore/inc/TlCm/tlCmError.h b/common/MobiCore/inc/TlCm/tlCmError.h
index c9d30ee..90d9ba9 100644
--- a/common/MobiCore/inc/TlCm/tlCmError.h
+++ b/common/MobiCore/inc/TlCm/tlCmError.h
@@ -1,9 +1,9 @@
-/** @addtogroup CMP
+/** @addtogroup CMP_COMMON
* @{
*
* @file
- * CMTL (Content Management Trustlet) error return code definitions.
- * Definition of all possible CMTL error return codes.
+ * Content management trustlet (TlCm) error return code definitions.
+ * Definition of all possible TlCm error return codes.
*
* Copyright © Trustonic Limited 2013.
*
@@ -36,28 +36,48 @@
#ifndef TL_CM_ERROR_H_
#define TL_CM_ERROR_H_
+/** No error. */
#define SUCCESSFUL 0x00000000
+/** Error unknown command. */
#define RET_ERR_EXT_UNKNOWN_COMMAND 0xE0000000
+/** Error security status not satified. */
#define RET_ERR_EXT_SECURITY_STATUS_NOT_SATISFIED 0xE0000010
+/** Error secure messaging failed. */
#define RET_ERR_EXT_SECURE_MESSAGING_FAILED 0xE0000020
+/** Error incorrect parameters. */
#define RET_ERR_EXT_INCORRECT_PARAMETERS 0xE0000030
+/** Error referenced data invalid. */
#define RET_ERR_EXT_REFERENCED_DATA_INVALID 0xE0000040
+/** Error referenced data not found. */
#define RET_ERR_EXT_REFERENCED_DATA_NOT_FOUND 0xE0000050
+/** Error method blocked. */
#define RET_ERR_EXT_METHOD_BLOCKED 0xE0000060
+/** Error conditions of use not satified. */
#define RET_ERR_EXT_CONDITIONS_OF_USE_NOT_SATISFIED 0xE0000070
+/** Error container already registred error. */
#define RET_ERR_EXT_ALREADY_REGISTERED 0xE0000090
+/** Error container already activated. */
#define RET_ERR_EXT_ALREADY_ACTIVATED 0xE00000A0
+/** Error container not registred. */
#define RET_ERR_EXT_NOT_REGISTERED 0xE00000B0
+/** Error container not activated. */
#define RET_ERR_EXT_NOT_ACTIVATED 0xE00000C0
+/** Error container full. */
#define RET_ERR_EXT_CONTAINER_FULL 0xE00000D0
+/** Error container not locked. */
#define RET_ERR_EXT_NOT_LOCKED 0xE00000E0
+/** Error container locked. */
#define RET_ERR_EXT_LOCKED 0xE00000F0
+/** Error container already locked. */
#define RET_ERR_EXT_ALREADY_LOCKED 0xE0000100
+/** Internal error. */
#define RET_ERR_EXT_INTERNAL_ERROR 0xE0001000
+/** Mapped allocation size error. */
#define RET_ERR_EXT_SIZE 0xE0002000
+/** Unspecified error. */
#define RET_ERR_EXT_UNSPECIFIED 0xEEEEEEEE
#endif // TL_CM_ERROR_H_
diff --git a/common/MobiCore/inc/TlCm/tlCmUuid.h b/common/MobiCore/inc/TlCm/tlCmUuid.h
index 60d8e18..5ce25c1 100644
--- a/common/MobiCore/inc/TlCm/tlCmUuid.h
+++ b/common/MobiCore/inc/TlCm/tlCmUuid.h
@@ -1,7 +1,7 @@
-/** @addtogroup CMP
+/** @addtogroup CMP_COMMON
* @{
* @file
- * Content management trustlet UUID definition.
+ * Content management trustlet (TlCm) Uuid definition.
*
* Copyright © Trustonic Limited 2013.
*
@@ -34,7 +34,7 @@
#ifndef TL_CM_UUID_H
#define TL_CM_UUID_H
-/** UUID of content management trustlet. */
+/** Uuid of TlCm. */
#define TL_CM_UUID { { 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
#endif // TL_CM_UUID_H
diff --git a/common/MobiCore/inc/TlCm/version.h b/common/MobiCore/inc/TlCm/version.h
index bcb4d34..00f3841 100644
--- a/common/MobiCore/inc/TlCm/version.h
+++ b/common/MobiCore/inc/TlCm/version.h
@@ -1,4 +1,7 @@
-/** @addtogroup CMP
+/** @addtogroup CMP_COMMON
+ * @{
+ * @file
+ * Content management trustlet (TlCm) version definition.
*
* Copyright © Trustonic Limited 2013.
*
@@ -31,8 +34,11 @@
#ifndef CMP_VERSION_H_
#define CMP_VERSION_H_
+/** Latest supported CMP major version number. */
#define CMP_VERSION_MAJOR 3
+/** Latest supported CMP minor version number. */
#define CMP_VERSION_MINOR 0
#endif // CMP_VERSION_H_
+/** @} */
diff --git a/common/MobiCore/inc/mcContainer.h b/common/MobiCore/inc/mcContainer.h
index 9edcc1a..621ffd3 100644
--- a/common/MobiCore/inc/mcContainer.h
+++ b/common/MobiCore/inc/mcContainer.h
@@ -31,7 +31,7 @@
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-
+
#ifndef MC_CONTAINER_H_
#define MC_CONTAINER_H_
@@ -43,16 +43,15 @@
#include "mcSo.h"
#include "mcSuid.h"
-#define CONTAINER_FORMAT_SO21 1
/** Support for trustlet container 2.1 */
#define CONTAINER_FORMAT_TL21 1
#define CONTAINER_VERSION_MAJOR 2
/** Support for the old format */
#ifdef CONTAINER_FORMAT_TL21
- #define CONTAINER_VERSION_MINOR 1
+#define CONTAINER_VERSION_MINOR 1
#else
- #define CONTAINER_VERSION_MINOR 0
+#define CONTAINER_VERSION_MINOR 0
#endif
#define MC_CONT_SYMMETRIC_KEY_SIZE 32
@@ -83,27 +82,25 @@
typedef mcUuid_t mcUuidChild_t[MC_CONT_CHILDREN_COUNT];
-/** Content management container states.
- */
+/** Content management container states. */
typedef enum {
- /** Container state unregistered. */
- MC_CONT_STATE_UNREGISTERED = 0,
- /** Container is registered. */
- MC_CONT_STATE_REGISTERED = 1,
- /** Container is activated. */
- MC_CONT_STATE_ACTIVATED = 2,
- /** Container is locked by root. */
- MC_CONT_STATE_ROOT_LOCKED = 3,
- /** Container is locked by service provider. */
- MC_CONT_STATE_SP_LOCKED = 4,
- /** Container is locked by root and service provider. */
- MC_CONT_STATE_ROOT_SP_LOCKED = 5,
- /** Dummy: ensure that enum is 32 bits wide. */
- MC_CONT_ATTRIB_SPACER = MC_ENUM_32BIT_SPACER
+ /** Container state unregistered. */
+ MC_CONT_STATE_UNREGISTERED = 0,
+ /** Container is registered. */
+ MC_CONT_STATE_REGISTERED = 1,
+ /** Container is activated. */
+ MC_CONT_STATE_ACTIVATED = 2,
+ /** Container is locked by root. */
+ MC_CONT_STATE_ROOT_LOCKED = 3,
+ /** Container is locked by service provider. */
+ MC_CONT_STATE_SP_LOCKED = 4,
+ /** Container is locked by root and service provider. */
+ MC_CONT_STATE_ROOT_SP_LOCKED = 5,
+ /** Dummy: ensure that enum is 32 bits wide. */
+ MC_CONT_ATTRIB_SPACER = MC_ENUM_32BIT_SPACER
} mcContainerState_t;
-/** Content management container attributes.
- */
+/** Content management container attributes. */
typedef struct {
mcContainerState_t state;
} mcContainerAttribs_t;
@@ -238,6 +235,9 @@
/** @} */
+/** Helper for finding maximum value */
+#define MC_MAX(x, y) (((x)<(y))?(y):(x))
+
/** Calculates the total size of the secure object hash and padding for a given
* container.
* @param contTotalSize Total size of the container (sum of plain and encrypted
@@ -246,17 +246,11 @@
* object").
* @return Total size of hash and padding for given container.
*/
-#if CONTAINER_FORMAT_SO21
- #define SO_CONT_HASH_AND_PAD_SIZE(contTotalSize, contCoSize) ( \
- MC_SO_SIZE_F21((contTotalSize) - (contCoSize), (contCoSize)) \
- - sizeof(mcSoHeader_t) \
- - (contTotalSize) )
-#else
- #define SO_CONT_HASH_AND_PAD_SIZE(contTotalSize, contCoSize) ( \
- MC_SO_SIZE((contTotalSize) - (contCoSize), (contCoSize)) \
- - sizeof(mcSoHeader_t) \
- - (contTotalSize) )
-#endif
+#define SO_CONT_HASH_AND_PAD_SIZE(contTotalSize, contCoSize) \
+ MC_MAX( MC_SO_SIZE_F21((contTotalSize) - (contCoSize), (contCoSize)) \
+ - sizeof(mcSoHeader_t) - (contTotalSize), \
+ MC_SO_SIZE((contTotalSize) - (contCoSize), (contCoSize)) \
+ - sizeof(mcSoHeader_t) - (contTotalSize) )
/** @defgroup MC_CONTAINER_SECURE_OBJECTS Containers in secure objects.
* Secure objects wrapping different containers.
@@ -296,26 +290,18 @@
uint8_t hashAndPad[SO_CONT_HASH_AND_PAD_SIZE(sizeof(mcTltCont_2_1_t), sizeof(mcCoTltCont_t))];
} mcSoTltCont_2_1_t;
-
#ifdef CONTAINER_FORMAT_TL21
- typedef mcSoTltCont_2_0_t mcSoTltCont_t;
-
-/*typedef union {
- mcSoTltCont_2_0_t soTlt_2_0_t;
- mcSoTltCont_2_1_t soTlt_2_1_t;
-} mcSoTltCont_t;*/
-
+typedef mcSoTltCont_2_0_t mcSoTltCont_t;
#else
- typedef mcTltContCommon_t mcTltCont_t;
+typedef mcTltContCommon_t mcTltCont_t;
- typedef struct {
- mcSoHeader_t soHeader;
- mcTltCont_t cont;
- uint8_t hashAndPad[SO_CONT_HASH_AND_PAD_SIZE(sizeof(mcTltCont_t), sizeof(mcCoTltCont_t))];
- } mcSoTltCont_t ;
+typedef struct {
+ mcSoHeader_t soHeader;
+ mcTltCont_t cont;
+ uint8_t hashAndPad[SO_CONT_HASH_AND_PAD_SIZE(sizeof(mcTltCont_t), sizeof(mcCoTltCont_t))];
+} mcSoTltCont_t ;
#endif
-
/** */
typedef struct {
mcSoHeader_t soHeader;
@@ -323,13 +309,6 @@
uint8_t hashAndPad[SO_CONT_HASH_AND_PAD_SIZE(sizeof(mcDataCont_t), sizeof(mcCoDataCont_t))];
} mcSoDataCont_t;
-/** */
-typedef struct {
- mcSoRootCont_t soRoot;
- mcSoSpCont_t soSp;
- mcSoTltCont_t soTlt;
-} mcSoContainerPath_t;
-
/** Trustlet Blob length info */
typedef struct {
uint32_t magic; /**< New blob format magic number*/
diff --git a/common/MobiCore/inc/mcSpid.h b/common/MobiCore/inc/mcSpid.h
index ea19e5e..55d7261 100644
--- a/common/MobiCore/inc/mcSpid.h
+++ b/common/MobiCore/inc/mcSpid.h
@@ -49,6 +49,9 @@
/** SPID for system applications. */
static const mcSpid_t MC_SPID_SYSTEM = 0xFFFFFFFE;
+/** SPID reserved for tests only */
+static const mcSpid_t MC_SPID_RESERVED_TEST = 0xFFFFFFFD;
+
#endif // MC_SPID_H_
/** @} */
diff --git a/daemon/Daemon/Device/Platforms/Generic/TrustZoneDevice.cpp b/daemon/Daemon/Device/Platforms/Generic/TrustZoneDevice.cpp
index 838b39b..db9c236 100644
--- a/daemon/Daemon/Device/Platforms/Generic/TrustZoneDevice.cpp
+++ b/daemon/Daemon/Device/Platforms/Generic/TrustZoneDevice.cpp
@@ -129,9 +129,6 @@
// Wipe memory before first usage
bzero(mciBuffer, MCI_BUFFER_SIZE);
- // Here we are safe to setup the MobiCore logs
- setupLog();
-
// Init MC with NQ and MCP buffer addresses
int ret = pMcKMod->fcInit(0, NQ_BUFFER_SIZE, NQ_BUFFER_SIZE, MCP_BUFFER_SIZE);
if (ret != 0) {
@@ -139,6 +136,9 @@
return false;
}
+ // Here we are safe to setup the MobiCore logs
+ setupLog();
+
// First empty N-SIQ which results in set up of the MCI structure
if (!nsiq()) {
return false;
diff --git a/daemon/Daemon/MobiCoreDriverDaemon.cpp b/daemon/Daemon/MobiCoreDriverDaemon.cpp
index cda7db0..4fd0595 100644
--- a/daemon/Daemon/MobiCoreDriverDaemon.cpp
+++ b/daemon/Daemon/MobiCoreDriverDaemon.cpp
@@ -62,6 +62,9 @@
static void checkMobiCoreVersion(MobiCoreDevice *mobiCoreDevice);
+#define LOG_I_RELEASE(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
+
+
//------------------------------------------------------------------------------
MobiCoreDriverDaemon::MobiCoreDriverDaemon(
bool enableScheduler,
@@ -104,14 +107,14 @@
void
)
{
- LOG_I("Daemon starting up...");
- LOG_I("Socket interface version is %u.%u", DAEMON_VERSION_MAJOR, DAEMON_VERSION_MINOR);
+ LOG_I_RELEASE("Daemon starting up...");
+ LOG_I_RELEASE("Socket interface version is %u.%u", DAEMON_VERSION_MAJOR, DAEMON_VERSION_MINOR);
#ifdef MOBICORE_COMPONENT_BUILD_TAG
- LOG_I("%s", MOBICORE_COMPONENT_BUILD_TAG);
+ LOG_I_RELEASE("%s", MOBICORE_COMPONENT_BUILD_TAG);
#else
#warning "MOBICORE_COMPONENT_BUILD_TAG is not defined!"
#endif
- LOG_I("Build timestamp is %s %s", __DATE__, __TIME__);
+ LOG_I_RELEASE("Build timestamp is %s %s", __DATE__, __TIME__);
int i;
@@ -127,7 +130,7 @@
}
mobiCoreDevice->start();
- LOG_I("Checking version of MobiCore");
+ LOG_I_RELEASE("Checking version of MobiCore");
checkMobiCoreVersion(mobiCoreDevice);
if ( mobiCoreDevice->mobicoreAlreadyRunning() ) {
@@ -1069,12 +1072,18 @@
char *args[]
)
{
+#ifdef MOBICORE_COMPONENT_BUILD_TAG
+ fprintf(stderr, "MobiCore Driver Daemon %u.%u. \"%s\" %s %s\n", DAEMON_VERSION_MAJOR, DAEMON_VERSION_MINOR, MOBICORE_COMPONENT_BUILD_TAG, __DATE__, __TIME__);
+#else
+#warning "MOBICORE_COMPONENT_BUILD_TAG is not defined!"
+#endif
+
fprintf(stderr, "usage: %s [-mdsbh]\n", args[0]);
fprintf(stderr, "Start MobiCore Daemon\n\n");
fprintf(stderr, "-h\t\tshow this help\n");
fprintf(stderr, "-b\t\tfork to background\n");
fprintf(stderr, "-s\t\tdisable daemon scheduler(default enabled)\n");
- fprintf(stderr, "-r DRIVER\t\tMobiCore driver to load at start-up\n");
+ fprintf(stderr, "-r DRIVER\tMobiCore driver to load at start-up\n");
}
//------------------------------------------------------------------------------
@@ -1210,7 +1219,7 @@
LOG_E("Failed to obtain MobiCore version info. MCP return code: %u", mcResult);
failed = true;
} else {
- LOG_I("Product ID is %s", versionPayload.versionInfo.productId);
+ LOG_I_RELEASE("Product ID is %s", versionPayload.versionInfo.productId);
// Check MobiCore version info.
char *msg;
@@ -1218,22 +1227,22 @@
LOG_E("%s", msg);
failed = true;
}
- LOG_I("%s", msg);
+ LOG_I_RELEASE("%s", msg);
if (!checkVersionOkSO(versionPayload.versionInfo.versionSo, &msg)) {
LOG_E("%s", msg);
failed = true;
}
- LOG_I("%s", msg);
+ LOG_I_RELEASE("%s", msg);
if (!checkVersionOkMCLF(versionPayload.versionInfo.versionMclf, &msg)) {
LOG_E("%s", msg);
failed = true;
}
- LOG_I("%s", msg);
+ LOG_I_RELEASE("%s", msg);
if (!checkVersionOkCONTAINER(versionPayload.versionInfo.versionContainer, &msg)) {
LOG_E("%s", msg);
failed = true;
}
- LOG_I("%s", msg);
+ LOG_I_RELEASE("%s", msg);
}
if (failed) {
diff --git a/daemon/Registry/PrivateRegistry.cpp b/daemon/Registry/PrivateRegistry.cpp
index 75416be..8943260 100755
--- a/daemon/Registry/PrivateRegistry.cpp
+++ b/daemon/Registry/PrivateRegistry.cpp
@@ -65,7 +65,9 @@
using namespace std;
-static const string MC_REGISTRY_DEFAULT_PATH = "/data/app/mcRegistry";
+static const string MC_REGISTRY_CONTAINER_PATH = "/data/app/mcRegistry";
+static const string MC_REGISTRY_DEFAULT_PATH = "/system/app/mcRegistry";
+static const string MC_REGISTRY_FALLBACK_PATH = "/data/app/mcRegistry";
static const string AUTH_TOKEN_FILE_NAME = "00000000.authtokcont";
static const string ROOT_FILE_NAME = "00000000.rootcont";
static const string SP_CONT_FILE_EXT = ".spcont";
@@ -73,8 +75,6 @@
static const string TL_BIN_FILE_EXT = ".tlbin";
static const string DATA_CONT_FILE_EXT = ".datacont";
-static const string ENV_MC_REGISTRY_PATH = "MC_REGISTRY_PATH";
-static const string ENV_MC_REGISTRY_FALLBACK_PATH = "MC_REGISTRY_FALLBACK_PATH";
static const string ENV_MC_AUTH_TOKEN_PATH = "MC_AUTH_TOKEN_PATH";
//------------------------------------------------------------------------------
@@ -109,26 +109,36 @@
//------------------------------------------------------------------------------
static string getRegistryPath()
{
- const char *path;
+ string registryPath;
+
+ // use the default registry path.
+ registryPath = MC_REGISTRY_CONTAINER_PATH;
+ LOG_I(" Using default registry path %s", registryPath.c_str());
+
+ assert(registryPath.length() != 0);
+
+ return registryPath;
+}
+
+
+//------------------------------------------------------------------------------
+static string getTlRegistryPath()
+{
string registryPath;
// First, attempt to use regular registry environment variable.
- path = getenv(ENV_MC_REGISTRY_PATH.c_str());
- if (doesDirExist(path)) {
- LOG_I("getRegistryPath(): Using MC_REGISTRY_PATH %s", path);
- registryPath = path;
- } else {
+ if (doesDirExist(MC_REGISTRY_DEFAULT_PATH.c_str())) {
+ registryPath = MC_REGISTRY_DEFAULT_PATH;
+ LOG_I("getTlRegistryPath(): Using MC_REGISTRY_PATH %s", registryPath.c_str());
+ } else if (doesDirExist(MC_REGISTRY_FALLBACK_PATH.c_str())) {
// Second, attempt to use fallback registry environment variable.
- path = getenv(ENV_MC_REGISTRY_FALLBACK_PATH.c_str());
- if (doesDirExist(path)) {
- LOG_I("getRegistryPath(): Using MC_REGISTRY_FALLBACK_PATH %s", path);
- registryPath = path;
- }
+ registryPath = MC_REGISTRY_FALLBACK_PATH;
+ LOG_I("getTlRegistryPath(): Using MC_REGISTRY_FALLBACK_PATH %s", registryPath.c_str());
}
// As a last resort, use the default registry path.
if (registryPath.length() == 0) {
- registryPath = MC_REGISTRY_DEFAULT_PATH;
+ registryPath = MC_REGISTRY_CONTAINER_PATH;
LOG_I(" Using default registry path %s", registryPath.c_str());
}
@@ -196,7 +206,7 @@
//------------------------------------------------------------------------------
static string getTlBinFilePath(const mcUuid_t *uuid)
{
- return getRegistryPath() + "/" + byteArrayToString(uuid, sizeof(*uuid)) + TL_BIN_FILE_EXT;
+ return getTlRegistryPath() + "/" + byteArrayToString(uuid, sizeof(*uuid)) + TL_BIN_FILE_EXT;
}
//------------------------------------------------------------------------------
@@ -535,10 +545,10 @@
LOG_I("delete DT: %s", dname.c_str());
if (0 != (e = remove(dname.c_str()))) {
LOG_E("remove UUID-data %s failed! error: %d", dname.c_str(), e);
- return MC_DRV_ERR_UNKNOWN;
}
}
}
+ closedir(dp);
LOG_I("delete dir: %s", pathname.c_str());
if (0 != (e = rmdir(pathname.c_str()))) {
LOG_E("remove UUID-dir failed! errno: %d", e);
@@ -599,10 +609,10 @@
LOG_I("delete DT: %s", dname.c_str());
if (0 != (e = remove(dname.c_str()))) {
LOG_E("remove SPID-data %s failed! error: %d", dname.c_str(), e);
- return MC_DRV_ERR_UNKNOWN;
}
}
}
+ closedir(dp);
LOG_I("delete dir: %s", pathname.c_str());
if (0 != (e = rmdir(pathname.c_str()))) {
LOG_E("remove SPID-dir failed! error: %d", e);
diff --git a/daemon/Registry/Registry.cpp b/daemon/Registry/Registry.cpp
index f37ec69..2ada6ac 100755
--- a/daemon/Registry/Registry.cpp
+++ b/daemon/Registry/Registry.cpp
@@ -322,22 +322,7 @@
//------------------------------------------------------------------------------
mcResult_t mcRegistryStoreData(void *so, uint32_t size)
{
- typedef struct {
- uint32_t commandId;
- uint32_t soSize;
- uint8_t so;
- } storeCmd;
-
- mcResult_t ret;
- storeCmd *cmd = (storeCmd*)malloc(sizeof(storeCmd) + size - 1);
-
- cmd->commandId = MC_DRV_REG_WRITE_SO_DATA;
- cmd->soSize = size;
- memcpy(&cmd->so, so, size);
-
- ret = writeBlobData(cmd, sizeof(storeCmd) + size - 1);
- free(cmd);
- return ret;
+ return MC_DRV_ERR_INVALID_PARAMETER;
}
diff --git a/daemon/buildTag.h b/daemon/buildTag.h
index 7c4d581..0b2a793 100644
--- a/daemon/buildTag.h
+++ b/daemon/buildTag.h
@@ -1,4 +1,4 @@
-/** Build tag created during build by ./Out/_build/_src/Scripts/trunk/00029519/Out/setBuildTag.sh.
+/** Build tag created during build by ./Out/_build/_src/Scripts/trunk/00035338/Out/setBuildTag.sh.
* <-- Copyright Trustonic Limited 2013 -->
*
* Redistribution and use in source and binary forms, with or without
@@ -26,4 +26,4 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define MOBICORE_COMPONENT_BUILD_TAG \
- "*** GC_MSM8960_Release_V016 ###"
+ "*** GC_MSM8960_Release_V019 ###"
diff --git a/rootpa/Code/Android/app/AndroidManifest.xml b/rootpa/Code/Android/app/AndroidManifest.xml
index 547fe8a..04460bf 100755
--- a/rootpa/Code/Android/app/AndroidManifest.xml
+++ b/rootpa/Code/Android/app/AndroidManifest.xml
@@ -2,9 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gd.mobicore.pa"
- android:versionCode="1"
- android:versionName="1.0"
- android:sharedUserId="android.uid.system" >
+ android:versionCode="@integer/code"
+ android:versionName="@string/name" >
<uses-sdk android:minSdkVersion="14"
android:targetSdkVersion="17" />
diff --git a/rootpa/Code/Android/app/jni/CommonPAWrapper/com_gd_mobicore_pa_jni_CommonPAWrapper.h b/rootpa/Code/Android/app/jni/CommonPAWrapper/com_gd_mobicore_pa_jni_CommonPAWrapper.h
index 66a9e0a..5a376ec 100755
--- a/rootpa/Code/Android/app/jni/CommonPAWrapper/com_gd_mobicore_pa_jni_CommonPAWrapper.h
+++ b/rootpa/Code/Android/app/jni/CommonPAWrapper/com_gd_mobicore_pa_jni_CommonPAWrapper.h
@@ -140,7 +140,7 @@
* Signature: (I[B[B)I
*/
JNIEXPORT jint JNICALL Java_com_gd_mobicore_pa_jni_CommonPAWrapper_installTrustlet
- (JNIEnv *, jobject, jint, jbyteArray, jbyteArray);
+ (JNIEnv *, jobject, jint, jbyteArray, jint, jbyteArray, jbyteArray);
/*
* Class: com_gd_mobicore_pa_jni_CommonPAWrapper
diff --git a/rootpa/Code/Android/app/jni/CommonPAWrapper/commonwrapper.cpp b/rootpa/Code/Android/app/jni/CommonPAWrapper/commonwrapper.cpp
index 8d59dad..32ada01 100755
--- a/rootpa/Code/Android/app/jni/CommonPAWrapper/commonwrapper.cpp
+++ b/rootpa/Code/Android/app/jni/CommonPAWrapper/commonwrapper.cpp
@@ -39,8 +39,8 @@
#include "logging.h"
#include "provisioningagent.h"
-#define SPID_DEVELOPER_SP 0
#define CERT_PATH "/system/etc/security/cacerts"
+#define HARDCODED_STORAGEPATH "/data/data/com.gd.mobicore.pa"
JavaVM* jvmP_ = NULL;
const jint VERSION=JNI_VERSION_1_2;
@@ -398,9 +398,11 @@
jmethodID getFilesDirPath = envP->GetMethodID(cls, "getFilesDirPath","()Ljava/lang/String;");
if(NULL==getFilesDirPath)
{
- LOGE("setFilesPath getFilesDirPath==NULL");
+ setPaths(HARDCODED_STORAGEPATH, CERT_PATH);
+ LOGE("<<setFilesPath getFilesDirPath==NULL, used hardcoded paths");
return;
- }
+ }
+
jobject jpath = envP->CallObjectMethod(obj, getFilesDirPath);
if(jpath!=NULL)
@@ -409,7 +411,7 @@
setPaths(pathP, CERT_PATH);
if(NULL == pathP)
{
- LOGE("setFilesPath pathP==NULL");
+ LOGE("setFilesPath pathP==NULL");
}
// LOGD("path: %s\n", pathP);
@@ -417,8 +419,10 @@
}
else
{
- LOGE("setFilesPath jpath==NULL");
- }
+ LOGE("setFilesPath jpath==NULL, using hardcoded paths");
+ setPaths(HARDCODED_STORAGEPATH, CERT_PATH);
+ }
+
LOGD("<<setFilesPath\n");
}
@@ -432,10 +436,17 @@
void copyElement(JNIEnv* envP, char** target, jstring source)
{
- const char* tmp=envP->GetStringUTFChars(source, NULL);
- *target=(char*)malloc(strlen(tmp)+1);
- strcpy(*target, tmp);
- envP->ReleaseStringUTFChars(source, tmp);
+ if(source != NULL)
+ {
+ const char* tmp=envP->GetStringUTFChars(source, NULL);
+ *target=(char*)malloc(strlen(tmp)+1);
+ strcpy(*target, tmp);
+ envP->ReleaseStringUTFChars(source, tmp);
+ }
+ else
+ {
+ *target=NULL;
+ }
}
rootpaerror_t getSystemInfoCallback(osInfo_t* osSpecificInfoP)
@@ -519,7 +530,7 @@
JNIEXPORT jint JNICALL Java_com_gd_mobicore_pa_jni_CommonPAWrapper_installTrustlet
- (JNIEnv* envP, jobject obj, jint requestDataType, jbyteArray tltOrKeyData, jbyteArray seAddress)
+ (JNIEnv* envP, jobject obj, jint spid, jbyteArray uuid, jint requestDataType, jbyteArray tltOrKeyData, jbyteArray seAddress)
{
LOGD(">>Java_com_gd_mobicore_pa_jni_CommonPAWrapper_installTrustlet %ld %ld\n", (long int) stateUpdateCallback, (long int) getSystemInfoCallback);
setFilesPath(envP, obj);
@@ -541,7 +552,16 @@
trustletInstallationData_t tltData;
tltData.dataP=(uint8_t*) jniHelp.jByteArrayToCByteArray(tltOrKeyData, &tltData.dataLength);
tltData.dataType=(TltInstallationRequestDataType) requestDataType;
- ret=installTrustlet(SPID_DEVELOPER_SP, stateUpdateCallback, getSystemInfoCallback, &tltData);
+ uint32_t uuidLength=0;
+ uint8_t* uuidP=(uint8_t*) jniHelp.jByteArrayToCByteArray(uuid, &uuidLength);
+ if(UUID_LENGTH != uuidLength){
+ LOGD("<<Java_com_gd_mobicore_pa_jni_CommonPAWrapper_installTrustlet, wrong uuidLength %d, not installing\n", uuidLength);
+ free(uuidP);
+ return ROOTPA_ERROR_ILLEGAL_ARGUMENT;
+ }
+ memcpy(tltData.uuid.value, uuidP, UUID_LENGTH);
+ free(uuidP);
+ ret=installTrustlet(spid, stateUpdateCallback, getSystemInfoCallback, &tltData);
}
LOGD("<<Java_com_gd_mobicore_pa_jni_CommonPAWrapper_installTrustlet %d\n", ret);
return ret;
diff --git a/rootpa/Code/Android/app/res/values/version.xml b/rootpa/Code/Android/app/res/values/version.xml
new file mode 100644
index 0000000..a943b2a
--- /dev/null
+++ b/rootpa/Code/Android/app/res/values/version.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="name">1.0003 (34387)</string>
+ <integer name="code">0x10003</integer>
+</resources>
diff --git a/rootpa/Code/Android/app/src/com/gd/mobicore/pa/jni/CommonPAWrapper.java b/rootpa/Code/Android/app/src/com/gd/mobicore/pa/jni/CommonPAWrapper.java
index 9e97a1d..fbb3fd5 100755
--- a/rootpa/Code/Android/app/src/com/gd/mobicore/pa/jni/CommonPAWrapper.java
+++ b/rootpa/Code/Android/app/src/com/gd/mobicore/pa/jni/CommonPAWrapper.java
@@ -66,7 +66,7 @@
public native int getSPContainerState(int spid, int[] state);
public native int getSPContainerStructure(int spid, int[] ints, byte[][] uuidArray, int[] trustletStates);
public native int doProvisioning(int uid, int spid, byte[] seAddress);
- public native int installTrustlet(int dataType, byte[] tltOrKeyData, byte[] seAddress);
+ public native int installTrustlet(int spid, byte[] uuid, int dataType, byte[] tltOrKeyData, byte[] seAddress);
public native int unregisterRootContainer(byte[] seAddress);
public native void setEnvironmentVariable(byte[] variable, byte[] value);
diff --git a/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/BaseService.java b/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/BaseService.java
index 702b640..536a6b8 100755
--- a/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/BaseService.java
+++ b/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/BaseService.java
@@ -80,11 +80,12 @@
private static final int C_PROVISIONING_STATE_THREAD_EXITING=0xDEAD;
protected final CommonPAWrapper commonPaWrapper_=new CommonPAWrapper(this);
-
+ private boolean sessionOpened_=false;
+
protected CommonPAWrapper commonPAWrapper(){
return commonPaWrapper_;
}
-
+
protected synchronized CommandResult acquireLock(int uid, boolean openSession){
Log.d(TAG,">>BaseService.acquireLock "+uid+" "+lock_.get()+" "+timer_);
if(uid==LOCK_FREE){
@@ -93,8 +94,10 @@
boolean result=lock_.compareAndSet(LOCK_FREE, uid);
if(result==true || lock_.get() == uid){
- if(result==true && openSession==true){
+ if(result==true && openSession==true && sessionOpened_==false){
+ Log.d(TAG,"BaseService.acquireLock, openingSession");
commonPAWrapper().openSession();
+ sessionOpened_=true;
}
if(timer_!=null){
@@ -105,7 +108,13 @@
timer_=new Timer();
timerTask_=new TimerTask(){
public void run(){
+ Log.i(TAG,"Timer expired, releasing lock");
lock_.set(LOCK_FREE);
+ if(sessionOpened_==true){
+ Log.d(TAG,"BaseService.Timer.run, closingSession");
+ commonPAWrapper().closeSession();
+ sessionOpened_=false;
+ }
}
};
timer_.schedule(timerTask_,LOCK_TIMEOUT_MS);
@@ -125,8 +134,10 @@
if((lock_.get()==LOCK_FREE) || (lock_.compareAndSet(uid, LOCK_FREE)==true)){
- if(closeSession){
+ if(closeSession==true && sessionOpened_==true){
+ Log.d(TAG,"BaseService.releaseLock, closingSession");
commonPAWrapper().closeSession();
+ sessionOpened_=false;
}
if(timer_!=null){
@@ -242,9 +253,20 @@
*/
public void provisioningStateCallback(int state, int ret){
Log.d(TAG,">>provisioningStateCallback "+state+" "+ret);
-
+
+ // since sommunication with SE may take consirderable amount of time, we refresh the Lock timer
+ // by calling acquireLock every time a state notification callback is called. This way the lock
+ // will not timeout before the communication with SE is complete.
+ try{
+ CommandResult res=acquireLock(doProvisioningLockSuid_, false);
+ if(!res.isOk()){
+ Log.e(TAG,"provisioningStateCallback re-acquiring lock failed, res: "+res.result());
+ }
+ }catch(Exception e){
+ Log.e(TAG,"provisioningStateCallback re-acquiring lock failed: "+e);
+ }
+
Intent intent=new Intent(RootPAProvisioningIntents.PROVISIONING_PROGRESS_UPDATE);
-
switch(state){
case C_CONNECTING_SERVICE_ENABLER:
intent.putExtra(RootPAProvisioningIntents.STATE, RootPAProvisioningIntents.CONNECTING_SERVICE_ENABLER);
@@ -263,7 +285,6 @@
break;
case C_FINISHED_PROVISIONING:
intent.putExtra(RootPAProvisioningIntents.STATE, RootPAProvisioningIntents.FINISHED_PROVISIONING);
- sendBroadcast(new Intent(RootPAProvisioningIntents.FINISHED_ROOT_PROVISIONING));
break;
case C_UNREGISTERING_ROOT_CONTAINER:
intent.putExtra(RootPAProvisioningIntents.STATE, RootPAProvisioningIntents.UNREGISTERING_ROOT_CONTAINER);
@@ -280,8 +301,8 @@
if(!res.isOk()){
Log.e(TAG,"provisioningStateCallback releasing lock failed, res: "+res.result());
}
- doProvisioningLockSuid_=0;
- intent=null; // no intent sent in this case
+ doProvisioningLockSuid_=0;
+ intent=null; // no intent sent in this case
}catch(Exception e){
Log.e(TAG,"provisioningStateCallback releasing lock failed: "+e);
}
@@ -289,6 +310,7 @@
unregisterReceiver(networkChangeReceiver_);
networkChangeReceiver_=null;
}
+ sendBroadcast(new Intent(RootPAProvisioningIntents.FINISHED_ROOT_PROVISIONING));
break;
default:
Log.e(TAG,"unknown state: "+state);
@@ -301,11 +323,61 @@
Log.d(TAG,"<<provisioningStateCallback ");
}
+
+ public void onConfigurationChanged(android.content.res.Configuration newConfig){
+ super.onConfigurationChanged(newConfig);
+ Log.d(TAG,"BaseService.onConfigurationChanged");
+ }
+ public void onCreate(){
+ super.onCreate();
+ Log.d(TAG,"BaseService.onCreate");
+ }
+
public void onDestroy(){
if(networkChangeReceiver_!=null){
unregisterReceiver(networkChangeReceiver_);
networkChangeReceiver_=null;
}
+ Log.d(TAG,"BaseService.onDestroy");
}
+
+ public void onLowMemory(){
+ super.onLowMemory();
+ Log.d(TAG,"BaseService.onLowMemory");
+ }
+
+ public void onRebind(Intent intent){
+ super.onRebind(intent);
+ Log.d(TAG,"BaseService.onRebind");
+ }
+
+ public void onStart(Intent intent, int startId){
+ super.onStart(intent, startId);
+ Log.d(TAG,"BaseService.onStart");
+ }
+
+ public int onStartCommand(Intent intent, int flags, int startId){
+ int res=super.onStartCommand(intent, flags, startId);
+ Log.d(TAG,"BaseService.onStartCommand");
+ return res;
+ }
+
+ public void onTaskRemoved(Intent intent){
+ super.onTaskRemoved(intent);
+ Log.d(TAG,"BaseService.onTaskRemoved");
+ }
+
+
+ public void onTrimMemory(int level){
+ super.onTrimMemory(level);
+ Log.d(TAG,"BaseService.onTrimMemory");
+ }
+
+ public boolean onUnbind(Intent intent){
+ boolean res=super.onUnbind(intent);
+ Log.d(TAG,"BaseService.onUnbind");
+ return res;
+ }
+
}
\ No newline at end of file
diff --git a/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/DeveloperService.java b/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/DeveloperService.java
index 2e42bcf..9cc30bc 100755
--- a/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/DeveloperService.java
+++ b/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/DeveloperService.java
@@ -49,7 +49,7 @@
private final RootPADeveloperIfc.Stub mBinder = new ServiceIfc();
private static final int DEVELOPER_UID_FOR_LOCK=0x22220000;
-
+ private static final int UUID_LENGTH=16;
private class ServiceIfc extends RootPADeveloperIfc.Stub {
public ServiceIfc(){
super();
@@ -63,11 +63,20 @@
private CommonPAWrapper commonPAWrapper(){
return DeveloperService.this.commonPAWrapper();
}
+
+ private boolean uuidOk(byte[] uuid){
+ if(uuid==null || uuid.length != UUID_LENGTH){
+ Log.e(TAG,"DeveloperService.Stub.uuidOk NOK");
+ return false;
+ }
+ Log.d(TAG,"DeveloperService.Stub.uuidOk OK");
+ return true;
+ }
- public CommandResult installTrustlet(byte[] trustletBinary, byte[] key){
+ public CommandResult installTrustlet(int spid, byte[] uuid, byte[] trustletBinary, byte[] key){
Log.d(TAG,">>DeveloperService.Stub.installTrustlet");
- if((trustletBinary == null && key == null) || (trustletBinary != null && key != null)){
+ if((trustletBinary == null && key == null) || (trustletBinary != null && key != null) || 0==spid || !uuidOk(uuid)){
return new CommandResult(CommandResult.ROOTPA_ERROR_ILLEGAL_ARGUMENT);
}
@@ -89,7 +98,7 @@
dataType=REQUEST_DATA_KEY;
}
setupProxy();
- err=commonPAWrapper().installTrustlet(dataType, data, se_);
+ err=commonPAWrapper().installTrustlet(spid, uuid, dataType, data, se_);
}catch(Exception e){
Log.e(TAG,"CommonPAWrapper().installTrustlet exception: ", e);
err=CommandResult.ROOTPA_ERROR_INTERNAL;
@@ -120,8 +129,17 @@
@Override
public IBinder onBind(Intent intent){
- se_ = intent.getByteArrayExtra("SE");
- Log.setLoggingLevel(intent.getIntExtra("LOG",0));
+ try{
+ se_ = intent.getByteArrayExtra("SE");
+ }catch(Exception e){
+ Log.i(TAG,"DeveloperService something wrong in the given ip "+e );
+ }
+
+ try{
+ Log.setLoggingLevel(intent.getIntExtra("LOG",0));
+ }catch(Exception e){
+ Log.i(TAG,"DeveloperService something wrong in the given logging level "+e );
+ }
Log.i(TAG,"DeveloperService binding");
if(se_!=null) Log.d(TAG,new String(se_));
return mBinder;
diff --git a/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/OemService.java b/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/OemService.java
index 47e5e5b..04021ff 100755
--- a/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/OemService.java
+++ b/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/OemService.java
@@ -117,8 +117,17 @@
@Override
public IBinder onBind(Intent intent){
- se_ = intent.getByteArrayExtra("SE");
- Log.setLoggingLevel(intent.getIntExtra("LOG",0));
+ try{
+ se_ = intent.getByteArrayExtra("SE");
+ }catch(Exception e){
+ Log.i(TAG,"OemService something wrong in the given ip "+e );
+ }
+
+ try{
+ Log.setLoggingLevel(intent.getIntExtra("LOG",0));
+ }catch(Exception e){
+ Log.i(TAG,"OemService something wrong in the given logging level "+e );
+ }
Log.i(TAG,"OemService binding");
if(se_!=null) Log.d(TAG,new String(se_));
return mBinder;
diff --git a/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/ProvisioningService.java b/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/ProvisioningService.java
index c13f311..c29f8c1 100755
--- a/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/ProvisioningService.java
+++ b/rootpa/Code/Android/app/src/com/gd/mobicore/pa/service/ProvisioningService.java
@@ -508,8 +508,17 @@
@Override
public IBinder onBind(Intent intent){
- se_ = intent.getByteArrayExtra("SE");
- Log.setLoggingLevel(intent.getIntExtra("LOG",0));
+ try{
+ se_ = intent.getByteArrayExtra("SE");
+ }catch(Exception e){
+ Log.i(TAG,"ProvisioningService something wrong in the given ip "+e );
+ }
+
+ try{
+ Log.setLoggingLevel(intent.getIntExtra("LOG",0));
+ }catch(Exception e){
+ Log.i(TAG,"ProvisioningService something wrong in the given logging level "+e );
+ }
Log.i(TAG,"ProvisioningService binding");
if(se_!=null) Log.d(TAG,new String(se_));
return mBinder;
diff --git a/rootpa/Code/Android/lib/src/com/gd/mobicore/pa/ifc/CommandResult.java b/rootpa/Code/Android/lib/src/com/gd/mobicore/pa/ifc/CommandResult.java
index b082e36..4ba0237 100755
--- a/rootpa/Code/Android/lib/src/com/gd/mobicore/pa/ifc/CommandResult.java
+++ b/rootpa/Code/Android/lib/src/com/gd/mobicore/pa/ifc/CommandResult.java
@@ -104,6 +104,16 @@
public static final int ROOTPA_ERROR_REGISTRY_OBJECT_NOT_AVAILABLE=0x0000000B;
/**
+ CMP version of the device is not supported by SE
+ */
+ public static final int ROOTPA_ERROR_SE_CMP_VERSION=0x0000000C;
+
+ /**
+ Precoditions for SP container installation are not met in SE
+ */
+ public static final int ROOTPA_ERROR_SE_PRECONDITION_NOT_MET=0x0000000D;
+
+ /**
requested container does not exist. This is not always considered an error
but is used as an informative return code
*/
@@ -196,6 +206,12 @@
case ROOTPA_ERROR_REGISTRY_OBJECT_NOT_AVAILABLE:
ret+=": ROOTPA_ERROR_REGISTRY_OBJECT_NOT_AVAILABLE";
break;
+ case ROOTPA_ERROR_SE_CMP_VERSION:
+ ret+=": ROOTPA_ERROR_SE_CMP_VERSION";
+ break;
+ case ROOTPA_ERROR_SE_PRECONDITION_NOT_MET:
+ ret+=": ROOTPA_ERROR_SE_PRECONDITION_NOT_MET";
+ break;
default:
break;
}
diff --git a/rootpa/Code/Android/lib/src/com/gd/mobicore/pa/ifc/RootPADeveloperIfc.aidl b/rootpa/Code/Android/lib/src/com/gd/mobicore/pa/ifc/RootPADeveloperIfc.aidl
index 219b2c0..69d9e79 100755
--- a/rootpa/Code/Android/lib/src/com/gd/mobicore/pa/ifc/RootPADeveloperIfc.aidl
+++ b/rootpa/Code/Android/lib/src/com/gd/mobicore/pa/ifc/RootPADeveloperIfc.aidl
@@ -52,7 +52,7 @@
/**
* This method can be used for installing "developer trustlet" that is not tied to any
- * service provider and/or servic e manager. It contacts Service Enabler and asks it to
+ * service provider and/or service manager. It contacts Service Enabler and asks it to
* perform the tasks, so the device has to be connected to network in order for this to
* succeed.
*
@@ -64,6 +64,9 @@
*
* There are constants related to the intents in @ref RootPAProvisioningIntents
*
+ *
+ * @param spid service provider id
+ * @param uuid uuid of the trustlet in hex, without dashes. Needs to be correct length.
* @param trustletBinary trustlet binary to be encrypted with and returned back.
* If the binary is already encrypted, this array must be empty. The binary
* has to be encrypted for transfer. Note that only either trustletBinary
@@ -74,7 +77,7 @@
* or key can be given.
* @return indication of successful start of provisioning thread (ROOTPA_OK) or an error code
*/
- CommandResult installTrustlet(in byte[] trustletBinary, in byte[] key);
+ CommandResult installTrustlet(in int spid, in byte[] uuid, in byte[] trustletBinary, in byte[] key);
}
/**@}*/
diff --git a/rootpa/Code/Android/lib/src/com/gd/mobicore/pa/ifc/RootPAProvisioningIntents.java b/rootpa/Code/Android/lib/src/com/gd/mobicore/pa/ifc/RootPAProvisioningIntents.java
index 5cd437e..a3463d5 100755
--- a/rootpa/Code/Android/lib/src/com/gd/mobicore/pa/ifc/RootPAProvisioningIntents.java
+++ b/rootpa/Code/Android/lib/src/com/gd/mobicore/pa/ifc/RootPAProvisioningIntents.java
@@ -37,7 +37,7 @@
public class RootPAProvisioningIntents {
//
-/** Intents for starting up and connecitng to services */
+/** Intents for starting up and connecting to services */
//
public static final String PROVISIONING_SERVICE="com.gd.mobicore.pa.service.PROVISIONING_SERVICE";
diff --git a/rootpa/Code/Common/commandhandler.c b/rootpa/Code/Common/commandhandler.c
index 926e9e2..2b5c88f 100755
--- a/rootpa/Code/Common/commandhandler.c
+++ b/rootpa/Code/Common/commandhandler.c
@@ -414,6 +414,7 @@
paramsP->tltInstallationDataP->dataLength = tltDataP->dataLength;
paramsP->tltInstallationDataP->dataType = tltDataP->dataType;
+ memcpy(¶msP->tltInstallationDataP->uuid, &tltDataP->uuid, UUID_LENGTH);
}
else
{
@@ -494,8 +495,6 @@
mcSpid_t spid;
memset(&spid, 0x0, sizeof(mcSpid_t));
return provision(spid, callbackP, systemInfoCallbackP, NULL, initialRel_DELETE);
-
-
}
diff --git a/rootpa/Code/Common/include/rootpa.h b/rootpa/Code/Common/include/rootpa.h
index ec3a76a..fe35267 100755
--- a/rootpa/Code/Common/include/rootpa.h
+++ b/rootpa/Code/Common/include/rootpa.h
@@ -1,5 +1,5 @@
/*
-Copyright © Trustonic Limited 2013
+Copyright © Trustonic Limited 2013
All rights reserved.
@@ -41,13 +41,13 @@
#include "rootpaErrors.h"
-#define UUID_LENGTH 16
+#define UUID_LENGTH 16
typedef enum {
CONNECTING_SERVICE_ENABLER=1,
AUTHENTICATING_SOC=2,
- AUTHENTICATING_ROOT=3,
- CREATING_ROOT_CONTAINER=4,
+ CREATING_ROOT_CONTAINER=3,
+ AUTHENTICATING_ROOT=4,
CREATING_SP_CONTAINER=5,
FINISHED_PROVISIONING=6,
ERROR=7,
@@ -190,6 +190,10 @@
tells whether dataP points to trustlet binary (REQUEST_DATA_TLT) or encryption key (REQUEST_DATA_KEY)
*/
TltInstallationRequestDataType dataType;
+ /**
+ uuid of the trustlet
+ */
+ mcUuid_t uuid;
}trustletInstallationData_t;
#ifdef __cplusplus
diff --git a/rootpa/Code/Common/include/rootpaErrors.h b/rootpa/Code/Common/include/rootpaErrors.h
index daf0315..1e1f937 100755
--- a/rootpa/Code/Common/include/rootpaErrors.h
+++ b/rootpa/Code/Common/include/rootpaErrors.h
@@ -113,6 +113,16 @@
#define STRING_ROOTPA_ERROR_REGISTRY_OBJECT_NOT_AVAILABLE "REGISTRY_OBJECT_NOT_AVAILABLE"
/**
+CMP version of the device is not supported by SE
+*/
+#define ROOTPA_ERROR_SE_CMP_VERSION 0x0000000C
+
+/**
+Precoditions for SP container installation are not met in SE
+*/
+#define ROOTPA_ERROR_SE_PRECONDITION_NOT_MET 0x0000000D
+
+/**
requested container does not exist. This is not always considered an error
but is used as an informative return code
*/
diff --git a/rootpa/Code/Common/include/version.h b/rootpa/Code/Common/include/version.h
index 72444ef..043ba73 100755
--- a/rootpa/Code/Common/include/version.h
+++ b/rootpa/Code/Common/include/version.h
@@ -35,6 +35,6 @@
#define ROOTPA_VERSION_H_
#define ROOTPA_VERSION_MAJOR 1
-#define ROOTPA_VERSION_MINOR 0
+#define ROOTPA_VERSION_MINOR 3
#endif /** ROOTPA_VERSION_H_ */
diff --git a/rootpa/Code/Common/pacmp3.c b/rootpa/Code/Common/pacmp3.c
index 7d8860b..7099f7e 100755
--- a/rootpa/Code/Common/pacmp3.c
+++ b/rootpa/Code/Common/pacmp3.c
@@ -51,6 +51,37 @@
callbackP_=callbackP;
}
+// recovery from factory reset
+bool factoryResetAssumed()
+{
+ uint32_t contSize=0;
+ void* containerP=NULL;
+ mcResult_t result1=MC_DRV_OK;
+ mcResult_t result2=MC_DRV_OK;
+
+ if((result1=regReadAuthToken((AUTHTOKENCONTAINERP*)&containerP, &contSize))==MC_DRV_OK)
+ {
+ free(containerP);
+ return false;
+ }
+
+ if((result2=regReadRoot((ROOTCONTAINERP*)&containerP, &contSize))==MC_DRV_OK)
+ {
+ free(containerP);
+ return false;
+ }
+
+ // if neither root container, nor auth token container exists, we assume that factory reset has been performed.
+ if(MC_DRV_ERR_INVALID_DEVICE_FILE==result1 && MC_DRV_ERR_INVALID_DEVICE_FILE==result2)
+ {
+ LOGD("factoryResetAssumed returning true");
+ return true;
+ }
+
+ return false;
+}
+// recovery from factory reset
+
/*
*/
uint32_t sizeOfCmp()
@@ -468,22 +499,21 @@
}
case MC_CMP_CMD_SP_CONT_UNREGISTER:
- mcRet=regCleanupSp(spid_);
- if(MC_DRV_OK==mcRet)
+ mcRet=regCleanupSp(spid_);
+ if(MC_DRV_OK!=mcRet)
{
- if(getRspElementInfo(&elementIndex, handle, &offset, &length))
- {
- mcRet=regWriteRoot((ROOTCONTAINERP) (handle->mappedP+offset), length);
- }
- else
- {
- mcRet=-1;
- }
+ LOGE("pacmp3 storeContainers for %d regCleanupSp failed %d, , still attempting storing root", commandId, mcRet);
}
- else
+
+ if(getRspElementInfo(&elementIndex, handle, &offset, &length))
{
- LOGE("pacmp3 storeContainers for %d regCleanupSp failed %d", commandId, mcRet);
+ mcRet=regWriteRoot((ROOTCONTAINERP) (handle->mappedP+offset), length);
}
+ else
+ {
+ mcRet=-1;
+ }
+
break;
@@ -544,23 +574,26 @@
case MC_CMP_CMD_TLT_CONT_UNREGISTER:
mcRet=regCleanupTlt(&tltUuid_, spid_);
- if(MC_DRV_OK==mcRet)
+ if(MC_DRV_OK!=mcRet)
{
- if(getRspElementInfo(&elementIndex, handle, &offset, &length))
+ LOGE("pacmp3 storeContainers for %d regCleanupTlt failed %d, still attempting storing sp", commandId, mcRet);
+ }
+
+ if(getRspElementInfo(&elementIndex, handle, &offset, &length))
+ {
+ mcRet=regWriteSp(spid_, (SPCONTAINERP) (handle->mappedP+offset), length);
+ if(MC_DRV_OK!=mcRet)
{
- mcRet=regWriteSp(spid_, (SPCONTAINERP) (handle->mappedP+offset), length);
- }
- else
- {
- mcRet=-1;
- }
+ LOGE("pacmp3 storeContainers for %d regWriteSp failed %d", commandId, mcRet);
+ }
+ }
+ else
+ {
+ mcRet=-1;
+ }
- break;
- }
- else
- {
- LOGE("pacmp3 storeContainers for %d regCleanupTlt failed %d", commandId, mcRet);
- }
+ break;
+
default:
LOGD("pacmp3 storeContainers nothing to store");
// nothing to do
diff --git a/rootpa/Code/Common/pacmp3.h b/rootpa/Code/Common/pacmp3.h
index 833f61d..b5936c6 100755
--- a/rootpa/Code/Common/pacmp3.h
+++ b/rootpa/Code/Common/pacmp3.h
@@ -40,6 +40,10 @@
uint32_t sizeOfCmp();
+// recovery from factory reset
+bool factoryResetAssumed();
+// recovery from factory reset
+
cmpCommandId_t getCmpCommandId(const uint8_t* commandP);
rootpaerror_t prepareCommand(cmpCommandId_t commandId, CmpMessage* inCommandP, CMTHANDLE handle, CmpMessage* inResponseP);
diff --git a/rootpa/Code/Common/provisioningengine.c b/rootpa/Code/Common/provisioningengine.c
index f09926e..a8ba1bd 100755
--- a/rootpa/Code/Common/provisioningengine.c
+++ b/rootpa/Code/Common/provisioningengine.c
@@ -51,6 +51,7 @@
static const char* const RELATION_SYSTEMINFO = "relation/system_info";
static const char* const RELATION_RESULT = "relation/command_result";
static const char* const RELATION_NEXT = "relation/next";
+static const uint8_t* const SLASH="/";
static const char* const RELATION_INITIAL_POST="initial_post"; // this will make us to send HTTP GET, which
// is the right thing to do since we do not
@@ -61,7 +62,16 @@
static char initialUrl_[INITIAL_URL_BUFFER_LENGTH];
static CallbackFunctionP callbackP_=NULL;
-void addBytesToUri(char* uriP, uint8_t* bytes, uint32_t length )
+
+void addSlashToUri(char* uriP)
+{
+ LOGD(">>addSlashToUri");
+ int uriidx=strlen(uriP);
+ uriP[uriidx]='/';
+ LOGD("<<addSlashToUri %s", uriP);
+}
+
+void addBytesToUri(char* uriP, uint8_t* bytes, uint32_t length, bool uuid )
{
LOGD(">>add bytes to URI %d", length);
int uriidx=strlen(uriP);
@@ -75,6 +85,10 @@
singleNumber=(bytes[i]&0x0F);
singleNumber=((singleNumber<0xA)?(singleNumber+0x30):(singleNumber+0x57));
uriP[uriidx++]=singleNumber;
+ if(true==uuid && (3 == i || 5 == i || 7 == i || 9 == i))
+ {
+ uriP[uriidx++]='-';
+ }
}
LOGD("<<add bytes to URI %s %d", uriP, uriidx);
}
@@ -83,6 +97,7 @@
{
char intInString[10];
memset(intInString, 0, 10);
+ // using signed integer since this is how SE wants it
sprintf(intInString, "/%d", addThis);
strcpy((uriP+strlen(uriP)), intInString);
LOGD("add int to URI %s %d", uriP, addThis);
@@ -131,6 +146,19 @@
return(strlen(zeroTerminatedArray)==0);
}
+char* createBasicLink(mcSuid_t suid)
+{
+ char* tmpLinkP=NULL;
+ size_t urlLength=0;
+
+ urlLength=strlen(initialUrl_) + (sizeof(mcSuid_t)*2) + (sizeof(mcSpid_t)*2) + (sizeof(mcUuid_t)*2)+6; //possible slash and end zero and four dashes
+ tmpLinkP=malloc(urlLength);
+ memset(tmpLinkP,0,urlLength);
+ strcpy(tmpLinkP, initialUrl_);
+ addBytesToUri(tmpLinkP, (uint8_t*) &suid, sizeof(suid), false);
+ return tmpLinkP;
+}
+
void doProvisioningWithSe(
mcSpid_t spid,
mcSuid_t suid,
@@ -141,10 +169,22 @@
trustletInstallationData_t* tltDataP)
{
LOGD(">>doProvisioningWithSe");
- callbackP_=callbackP;
+
rootpaerror_t ret=ROOTPA_OK;
rootpaerror_t tmpRet=ROOTPA_OK;
-
+ bool workToDo = true;
+ const char* linkP=NULL;
+ const char* relP=NULL;
+ const char* pendingLinkP=NULL;
+ const char* pendingRelP=NULL;
+ const char* commandP=NULL; // "command" received from SE
+ const char* responseP=NULL; // "response" to be sent to SE
+
+ const char* usedLinkP=NULL;
+ const char* usedRelP=NULL;
+ const char* usedCommandP=NULL;
+
+ callbackP_=callbackP;
if(NULL==callbackP)
{
LOGE("No callbackP, can not respond to caller, this should not happen!");
@@ -153,29 +193,11 @@
if(empty(initialUrl_))
{
memset(initialUrl_, 0, INITIAL_URL_BUFFER_LENGTH);
- strncpy(initialUrl_, SE_URL, strlen(SE_URL));
-
+ strncpy(initialUrl_, SE_URL, strlen(SE_URL));
}
+
+ linkP=createBasicLink(suid);
-
- size_t urlLength=strlen(initialUrl_) + (sizeof(mcSuid_t)*2) + (sizeof(mcSpid_t)*2)+1;
-
- char* tmplinkP=malloc(urlLength);
- memset(tmplinkP,0,urlLength);
- strcpy(tmplinkP, initialUrl_);
-
- addBytesToUri(tmplinkP, (uint8_t*) &suid, sizeof(suid));
-
- const char* linkP=tmplinkP;
- tmplinkP=NULL;
- const char* relP=NULL;
- const char* commandP=NULL;
- const char* responseP=NULL;
-
- const char* usedLinkP=NULL;
- const char* usedRelP=NULL;
- const char* usedCommandP=NULL;
-
if (initialRel == initialRel_DELETE)
{
relP = RELATION_INITIAL_DELETE;
@@ -183,14 +205,15 @@
else
{
relP = RELATION_INITIAL_POST;
- addIntToUri((char*)linkP, (uint32_t) spid);
+ if(spid!=0) // SPID 0 is not legal. We use it for requesting root container creation only (no sp)
+ {
+ addIntToUri((char*)linkP, (uint32_t) spid);
+ }
}
-
LOGD("calling first callback %ld", (long int) callbackP);
callbackP(CONNECTING_SERVICE_ENABLER, ROOTPA_OK, NULL);
- bool workToDo = true;
ret=openSeClientAndInit();
if(ROOTPA_OK!=ret)
{
@@ -207,7 +230,22 @@
callbackP(ERROR, ret, NULL);
workToDo=false;
}
+ else
+ {
+ addSlashToUri((char*) linkP);
+ addBytesToUri((char*) linkP, (uint8_t*) tltDataP->uuid.value, UUID_LENGTH, true);
+ }
}
+
+// recovery from factory reset
+ if(factoryResetAssumed() && relP != RELATION_INITIAL_DELETE)
+ {
+ pendingLinkP=linkP;
+ pendingRelP=relP;
+ relP=RELATION_INITIAL_DELETE;
+ linkP=createBasicLink(suid);
+ }
+// recovery from factory reset
while(workToDo)
{
@@ -218,6 +256,20 @@
if(NULL==relP)
{
+// recovery from factory reset
+ if(pendingLinkP!=NULL && pendingRelP!=NULL)
+ {
+ free((char*)linkP);
+ linkP=pendingLinkP;
+ relP=pendingRelP;
+ pendingLinkP=NULL;
+ pendingRelP=NULL;
+ workToDo=true;
+ continue;
+ }
+// recovery from factory reset
+
+
callbackP(FINISHED_PROVISIONING, ROOTPA_OK, NULL); // this is the only place where we can be sure
// SE does not want to send any more data to us
// the other option would be to keep track on the
@@ -271,12 +323,11 @@
{
LOGE("getSysInfoP, getVersionP or buildXmlSystemInfo or httpPutAndReceiveCommand returned an error %d", ret);
callbackP(ERROR, ret, NULL);
- workToDo=false;
+ if(tmpRet!=ROOTPA_OK) workToDo=false; // if sending response succeeded, we rely on "relP" to tell whether we should continue or not
}
}
else if(strstr(relP, RELATION_INITIAL_DELETE))
{
- // response may be NULL or trustlet installation request
ret=httpDeleteAndReceiveCommand(&linkP, &relP, &commandP);
if(ret!=ROOTPA_OK)
@@ -307,19 +358,24 @@
if(NULL==responseP)
{
if(ROOTPA_OK==ret) ret=ROOTPA_ERROR_XML;
+ // have to set these to NULL since we are not even trying to get them from SE now
+ linkP=NULL;
+ relP=NULL;
+ commandP=NULL;
LOGE("no responseP");
}
else
{
+ // attempting to return response to SE even if there was something wrong in handleXmlMessage
tmpRet=httpPostAndReceiveCommand(responseP, &linkP, &relP, &commandP);
if(tmpRet!=ROOTPA_OK) ret=tmpRet;
}
- if(ret!=ROOTPA_OK)
- {
- LOGE("httpPostAndReceiveCommand or handleXmlMessage returned an error %d", ret);
+ if(ret!=ROOTPA_OK && ret!=ROOTPA_ERROR_REGISTRY_OBJECT_NOT_AVAILABLE) // if container is not found, not sending error intent to SP.PA since it is possible that SE can recover.
+ { // If it can not, it will return an error code anyway.
+ LOGE("httpPostAndReceiveCommand or handleXmlMessage returned an error %d %d", ret, tmpRet);
callbackP(ERROR, ret, NULL);
- workToDo=false;
+ if(tmpRet!=ROOTPA_OK) workToDo=false; // if sending response succeeded, we rely on "relP" to tell whether we should continue or not
}
}
@@ -341,7 +397,7 @@
workToDo=false;
}
- LOGD("end of provisioning loop work to do: %d, response %s", workToDo, (responseP==NULL)?"null":responseP);
+ LOGD("end of provisioning loop work to do: %d, responseP %ld", workToDo, responseP);
}
// last round cleaning in order to make sure both original and user pointers are released, but only once
diff --git a/rootpa/Code/Common/seclient.c b/rootpa/Code/Common/seclient.c
index 86fb9bc..a4fd992 100755
--- a/rootpa/Code/Common/seclient.c
+++ b/rootpa/Code/Common/seclient.c
@@ -43,10 +43,20 @@
#define HTTP_CODE_MOVED 301
#define HTTP_CODE_BAD_REQUEST 400
-#define HTTP_CODE_INTERNAL_ERROR 405
+#define HTTP_CODE_NOT_FOUND 404
+#define HTTP_CODE_METHOD_NOT_ALLOWED 405
#define HTTP_CODE_NOT_ACCEPTABLE 406
#define HTTP_CODE_REQUEST_TIMEOUT 408
#define HTTP_CODE_CONFLICT 409
+#define HTTP_CODE_LENGTH_REQUIRED 411
+#define HTTP_CODE_TOO_LONG 414
+#define HTTP_CODE_UNSUPPORTED_MEDIA 415
+#define HTTP_CODE_INVALID_DATA 422
+#define HTTP_CODE_FAILED_DEPENDENCY 424
+#define HTTP_CODE_INTERNAL_ERROR 500
+#define HTTP_CODE_CMP_VERSION 501
+#define HTTP_CODE_SERVICE_UNAVAILABLE 503
+#define HTTP_CODE_HTTP_VERSION 505
#ifdef __DEBUG
#define NONEXISTENT_TEST_URL "http://10.255.255.8:9/"
@@ -303,7 +313,7 @@
LOGD("<<saveCertFile");
}
-bool setBasicOpt(CURL* curl_handle, MemoryStruct* chunkP, HeaderStruct* headerChunkP, const char* linkP)
+bool setBasicOpt(CURL* curl_handle, MemoryStruct* chunkP, HeaderStruct* headerChunkP, const char* linkP, struct curl_slist* headerListP)
{
if(curl_easy_setopt(curl_handle, CURLOPT_URL, linkP)!=CURLE_OK)
{
@@ -336,7 +346,13 @@
return false;
}
-
+
+ if(curl_easy_setopt(curl_handle, CURLOPT_HTTPHEADER, headerListP)!=CURLE_OK)
+ {
+ LOGE("curl_easy_setopt CURLOPT_HTTPHEADER failed");
+ return false;
+ }
+
/* some servers don't like requests that are made without a user-agent
field, so we provide one */
if(curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "rpa/1.0")!=CURLE_OK)
@@ -440,16 +456,9 @@
return true;
}
-bool setPostOpt(CURL* curl_handle, const char* inputP, struct curl_slist* disableChunkP)
+bool setPostOpt(CURL* curl_handle, const char* inputP)
{
- if(inputP)
- {
- LOGD(">>setPostOpt %d %s", (int) strlen(inputP), inputP);
- }
- else
- {
- LOGD(">>setPostOpt");
- }
+ LOGD(">>setPostOpt %ld %d", inputP, inputP?strlen(inputP):0);
if (curl_easy_setopt(curl_handle, CURLOPT_POST, 1L)!=CURLE_OK)
{
@@ -472,11 +481,6 @@
return false;
}
- if (curl_easy_setopt(curl_handle, CURLOPT_HTTPHEADER, disableChunkP)!=CURLE_OK)
- {
- LOGE("curl_easy_setopt CURLOPT_HTTPHEADER failed");
- return false;
- }
LOGD("<<setPostOpt");
return true;
}
@@ -530,7 +534,7 @@
long int curlRet=CURLE_COULDNT_CONNECT;
long int http_code = 0;
int attempts=0;
- struct curl_slist* disableChunkP = NULL;
+ struct curl_slist* httpHeaderP = NULL;
LOGD(">>httpCommunicate");
if(NULL==linkP || NULL==relP || NULL==commandP || NULL==*linkP)
@@ -575,9 +579,7 @@
}
else if(method == httpMethod_POST)
{
- /* disable Expect: 100-continue since it creates problems with some proxies */
- disableChunkP = curl_slist_append(disableChunkP, "Expect:");
- if (setPostOpt(curl_handle_, inputP, disableChunkP)==false)
+ if (setPostOpt(curl_handle_, inputP)==false)
{
LOGE("setPostOpt failed");
free(chunk.memoryP);
@@ -604,7 +606,11 @@
}
}
- if(setBasicOpt(curl_handle_, &chunk, &headerChunk, *linkP)==false)
+ /* disable Expect: 100-continue since it creates problems with some proxies, it is only related to post but we do it here for simplicity */
+ httpHeaderP = curl_slist_append(httpHeaderP, "Expect:");
+ httpHeaderP = curl_slist_append(httpHeaderP, "Content-Type: application/vnd.mcorecm+xml;v=1.0");
+ httpHeaderP = curl_slist_append(httpHeaderP, "Accept: application/vnd.mcorecm+xml;v=1.0");
+ if(setBasicOpt(curl_handle_, &chunk, &headerChunk, *linkP, httpHeaderP)==false)
{
LOGE("setBasicOpt failed");
free(chunk.memoryP);
@@ -629,23 +635,46 @@
curl_easy_reset(curl_handle_);
return ROOTPA_ERROR_NETWORK;
}
-
+
LOGD("http return code from SE %ld", (long int) http_code);
- if ((200 <= http_code && http_code < 300) || HTTP_CODE_MOVED == http_code)
+ if ((200 <= http_code && http_code < 300))
{
ret=ROOTPA_OK;
}
else if (HTTP_CODE_BAD_REQUEST == http_code ||
- HTTP_CODE_INTERNAL_ERROR == http_code ||
+ HTTP_CODE_METHOD_NOT_ALLOWED == http_code ||
HTTP_CODE_NOT_ACCEPTABLE == http_code ||
- HTTP_CODE_CONFLICT == http_code )
+ HTTP_CODE_CONFLICT == http_code ||
+ HTTP_CODE_LENGTH_REQUIRED == http_code ||
+ HTTP_CODE_TOO_LONG == http_code ||
+ HTTP_CODE_UNSUPPORTED_MEDIA == http_code ||
+ HTTP_CODE_INVALID_DATA == http_code ||
+ HTTP_CODE_INTERNAL_ERROR == http_code ||
+ HTTP_CODE_HTTP_VERSION == http_code)
{
ret=ROOTPA_ERROR_INTERNAL;
}
- else if(HTTP_CODE_REQUEST_TIMEOUT == http_code || (411 <= http_code && http_code <= 505))
+ else if(HTTP_CODE_MOVED == http_code || // new URL would be in Location: header but RootPA does not support in currently (unless libcurl supports it transparently)
+ HTTP_CODE_REQUEST_TIMEOUT == http_code ||
+ HTTP_CODE_SERVICE_UNAVAILABLE == http_code)
{
ret=ROOTPA_ERROR_NETWORK;
}
+ else if (HTTP_CODE_CMP_VERSION == http_code)
+ {
+
+ ret=ROOTPA_ERROR_SE_CMP_VERSION;
+ }
+ else if (HTTP_CODE_FAILED_DEPENDENCY == http_code)
+ {
+ ret=ROOTPA_ERROR_SE_PRECONDITION_NOT_MET;
+ }
+ else if (HTTP_CODE_NOT_FOUND == http_code)
+ {
+ ret=ROOTPA_ERROR_ILLEGAL_ARGUMENT; // since the arguments (spid, in some cases uuid) for the URL are received from the client,
+ // this can be returned. It is also possible that suid is wrong (corrupted in device or info
+ // from device binding missing from SE, but we can not detect that easily.
+ }
else
{
LOGE("unexpected http return code from SE %ld", (long int)http_code);
@@ -657,7 +686,7 @@
*commandP=chunk.memoryP; // this needs to be freed by client
*linkP=headerChunk.linkP; // this needs to be freed by client
*relP=headerChunk.relP; // this needs to be freed by client
- if (disableChunkP) curl_slist_free_all(disableChunkP); // since we disabled some headers
+ if (httpHeaderP) curl_slist_free_all(httpHeaderP); // since we disabled some headers
curl_easy_reset(curl_handle_);
LOGD("%lu bytes retrieved\n", (long)chunk.size);
diff --git a/rootpa/Code/Common/xmlmessagehandler.c b/rootpa/Code/Common/xmlmessagehandler.c
index 312a018..7de588d 100755
--- a/rootpa/Code/Common/xmlmessagehandler.c
+++ b/rootpa/Code/Common/xmlmessagehandler.c
@@ -151,7 +151,7 @@
bool retValue=true;
char intBuffer[11];
- sprintf(intBuffer,"%d",id);
+ sprintf(intBuffer,"%u",(uint32_t) id);
if(xmlNewProp(commandResultNode, BAD_CAST "id", BAD_CAST intBuffer)==NULL) return false;
if(commandResultP==NULL)
@@ -165,7 +165,7 @@
}
else if(errorDetail!=0)
{
- sprintf(intBuffer,"%d",errorDetail);
+ sprintf(intBuffer,"%u",errorDetail);
if(xmlNewProp(errorNode, BAD_CAST "errorDetail", BAD_CAST intBuffer)==NULL)
{
retValue=false;
@@ -348,6 +348,7 @@
LOGD(">>handleCmpResponses %d", maxNumberOfCmpResponses);
rootpaerror_t ret=ROOTPA_OK;
uint32_t i;
+
for(i=0; (i<maxNumberOfCmpResponses) && (ROOTPA_OK==ret); i++)
{
char* encodedResponseP=NULL;
@@ -521,7 +522,7 @@
// intentional fallthrough
case TLT_UPLOAD:
numberOfUploadCommands=handleUploadCommand(commandType, &uploadCommandsP, numberOfUploadCommands, id, commandValueP, ignoreError);
- if(0==numberOfCmpCommands)
+ if(0==numberOfUploadCommands)
{
ret=ROOTPA_ERROR_OUT_OF_MEMORY;
}
@@ -764,8 +765,8 @@
{
ret=ROOTPA_ERROR_XML;
}
-
- if(ROOTPA_OK==ret)
+
+ if(xmlResponseP && xmlResponseP->children) // if there is something to return to SE, return it.
{
*responseP = (char*)validateDumpAndFree(xmlResponseP);
}
@@ -842,28 +843,28 @@
if(xmlNewProp(mcVersionNode, BAD_CAST "productId", BAD_CAST mcVersionP->productId)==NULL) return ROOTPA_ERROR_XML;
- sprintf(intBuffer,"%d",mcVersionP->versionMci);
+ sprintf(intBuffer,"%u",mcVersionP->versionMci);
if(xmlNewProp(mcVersionNode, BAD_CAST "versionMci", BAD_CAST intBuffer)==NULL) return ROOTPA_ERROR_XML;
- sprintf(intBuffer,"%d",mcVersionP->versionSo);
+ sprintf(intBuffer,"%u",mcVersionP->versionSo);
if(xmlNewProp(mcVersionNode, BAD_CAST "versionSo", BAD_CAST intBuffer)==NULL) return ROOTPA_ERROR_XML;
- sprintf(intBuffer,"%d",mcVersionP->versionMclf);
+ sprintf(intBuffer,"%u",mcVersionP->versionMclf);
if(xmlNewProp(mcVersionNode, BAD_CAST "versionMclf", BAD_CAST intBuffer)==NULL) return ROOTPA_ERROR_XML;
- sprintf(intBuffer,"%d",mcVersionP->versionContainer);
+ sprintf(intBuffer,"%u",mcVersionP->versionContainer);
if(xmlNewProp(mcVersionNode, BAD_CAST "versionContainer", BAD_CAST intBuffer)==NULL) return ROOTPA_ERROR_XML;
- sprintf(intBuffer,"%d",mcVersionP->versionMcConfig);
+ sprintf(intBuffer,"%u",mcVersionP->versionMcConfig);
if(xmlNewProp(mcVersionNode, BAD_CAST "versionMcConfig", BAD_CAST intBuffer)==NULL) return ROOTPA_ERROR_XML;
- sprintf(intBuffer,"%d",mcVersionP->versionTlApi);
+ sprintf(intBuffer,"%u",mcVersionP->versionTlApi);
if(xmlNewProp(mcVersionNode, BAD_CAST "versionTlApi", BAD_CAST intBuffer)==NULL) return ROOTPA_ERROR_XML;
- sprintf(intBuffer,"%d",mcVersionP->versionDrApi);
+ sprintf(intBuffer,"%u",mcVersionP->versionDrApi);
if(xmlNewProp(mcVersionNode, BAD_CAST "versionDrApi", BAD_CAST intBuffer)==NULL) return ROOTPA_ERROR_XML;
- sprintf(intBuffer,"%d",mcVersionP->versionCmp);
+ sprintf(intBuffer,"%u",mcVersionP->versionCmp);
if(xmlNewProp(mcVersionNode, BAD_CAST "versionCmp", BAD_CAST intBuffer)==NULL) return ROOTPA_ERROR_XML;
LOGD("<<fillMcVersion");
diff --git a/rootpa/Test/Android/RootPAClient/AndroidManifest.xml b/rootpa/Test/Android/RootPAClient/AndroidManifest.xml
index 9a912b1..0c4518c 100755
--- a/rootpa/Test/Android/RootPAClient/AndroidManifest.xml
+++ b/rootpa/Test/Android/RootPAClient/AndroidManifest.xml
@@ -2,8 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gd.mobicore.pa.service.Test"
- android:versionCode="1"
- android:versionName="1.0" >
+ android:versionCode="@integer/code"
+ android:versionName="@string/name" >
<uses-sdk android:minSdkVersion="14"
android:targetSdkVersion="17" />
diff --git a/rootpa/Test/Android/RootPAClient/res/values/version.xml b/rootpa/Test/Android/RootPAClient/res/values/version.xml
new file mode 100644
index 0000000..a943b2a
--- /dev/null
+++ b/rootpa/Test/Android/RootPAClient/res/values/version.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="name">1.0003 (34387)</string>
+ <integer name="code">0x10003</integer>
+</resources>
diff --git a/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/CmpTest.java b/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/CmpTest.java
index 06b18e0..76cb106 100755
--- a/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/CmpTest.java
+++ b/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/CmpTest.java
@@ -303,15 +303,16 @@
}
protected String byteArrayToDisplayableString(byte[] bytes){
- String s=new String();
+ if(bytes==null)return "null";
+ StringBuffer s=new StringBuffer(bytes.length*4);
for(int i=0;i<bytes.length;i++)
{
- s+=bytes[i]>9?" 0x":" ";
- s+=Integer.toHexString(bytes[i]&0xFF);
+ s.append(((bytes[i]&0xFF)>15)?" 0x":" 0x0");
+ s.append(Integer.toHexString(bytes[i]&0xFF));
}
- return s;
+ return s.toString();
}
-
+
public static String byteArrayToDisplayable(byte[] bytes){
return (new CmpTest(0).byteArrayToDisplayableString(bytes));
}
diff --git a/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/RootPAClient.java b/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/RootPAClient.java
index 67964c7..f3b9abf 100755
--- a/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/RootPAClient.java
+++ b/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/RootPAClient.java
@@ -119,8 +119,8 @@
void doBindService(){
- byte[] address="https://195.81.216.155:44378/service-enabler/enrollment/".getBytes(); // using local apache2 server
-// byte[] address="https://10.0.2.2:443/".getBytes(); // using local apache2 server
+// byte[] address="https://195.81.216.155:44378/service-enabler/enrollment/".getBytes();
+ byte[] address="https://10.0.2.2:443/".getBytes(); // using local apache2 server
int loggingLevel=android.util.Log.DEBUG;
try{
Intent psintent=new Intent(RootPAProvisioningIntents.PROVISIONING_SERVICE);
@@ -128,7 +128,6 @@
psintent.putExtra("LOG", loggingLevel);
bindService(psintent, provisioningServiceConnection_, Context.BIND_AUTO_CREATE);
provisioningServiceIsBound_=true;
- callCounter_++;
Intent dsintent=new Intent(RootPAProvisioningIntents.DEVELOPER_SERVICE);
dsintent.putExtra("SE", address);
diff --git a/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/TestDeveloperService.java b/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/TestDeveloperService.java
index 0ee4848..89fe741 100755
--- a/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/TestDeveloperService.java
+++ b/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/TestDeveloperService.java
@@ -85,7 +85,7 @@
parent_.printFinalResults();
return null;
}
-
+ private final static int TLT_INSTALL_TEST_SPID=10;
private final byte[] TEST_TRUSTLET={
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
@@ -181,7 +181,7 @@
// installTrustlet, trustlet binary
try{
- tret=developerServiceIfc_.installTrustlet(TEST_TRUSTLET, null);
+ tret=developerServiceIfc_.installTrustlet(TLT_INSTALL_TEST_SPID, CmpTest.TLTUUID, TEST_TRUSTLET, null);
}catch(Throwable e){
logi = logi.concat("FAILURE: call to installTrustlet with trustlet failed: " + e + "\n");
overallsuccess=false;
@@ -212,7 +212,7 @@
done_=false; // another call
try{
- kret=developerServiceIfc_.installTrustlet(null, TEST_KEY);
+ kret=developerServiceIfc_.installTrustlet(TLT_INSTALL_TEST_SPID, CmpTest.TLTUUID, null, TEST_KEY);
}catch(Throwable e){
logi = logi.concat("FAILURE: call to installTrustlet with key failed: " + e + "\n");
overallsuccess=false;
@@ -254,7 +254,7 @@
// error cases
CommandResult err1ret=new CommandResult(0x0FFF0000);
try{
- err1ret=developerServiceIfc_.installTrustlet(TEST_TRUSTLET, TEST_KEY);
+ err1ret=developerServiceIfc_.installTrustlet(TLT_INSTALL_TEST_SPID, CmpTest.TLTUUID, TEST_TRUSTLET, TEST_KEY);
}catch(Throwable e){
logi = logi.concat("FAILURE: call to installTrustlet with trustlet failed: " + e + "\n");
overallsuccess=false;
@@ -263,7 +263,7 @@
CommandResult err2ret=new CommandResult(0x0FFF0000);
try{
- err2ret=developerServiceIfc_.installTrustlet(null, null);
+ err2ret=developerServiceIfc_.installTrustlet(TLT_INSTALL_TEST_SPID, CmpTest.TLTUUID, null, null);
}catch(Throwable e){
logi = logi.concat("FAILURE: call to installTrustlet with trustlet failed: " + e + "\n");
overallsuccess=false;
@@ -278,7 +278,12 @@
logi = logi.concat("================= Results of testing installTrustlet: ").concat(((overallsuccess==true)?"SUCCESS":"FAILURE")+"\n");
logi = logi.concat(((tret.isOk())?"SUCCESS":"FAILURE")+": Testing installTrustlet, tlt "+((tret.isOk())?"\n":("returned: " +tret+" \n")));
- logi = logi.concat(((trustlet_!=null && Arrays.equals(trustlet_,TEST_TRUSTLET))?"SUCCESS":"FAILURE")+": Testing installTrustlet, tlt content in the intent\n");
+ logi = logi.concat(((trustlet_!=null && Arrays.equals(trustlet_,TEST_TRUSTLET))?"SUCCESS":"FAILURE")+": Testing installTrustlet, tlt content in the intent");
+
+ if(trustlet_==null) logi = logi.concat(", trustlet_ is null\n");
+ else if(!Arrays.equals(trustlet_,TEST_TRUSTLET)) logi = logi.concat(", received: \n"+CmpTest.byteArrayToDisplayable(trustlet_)+" \n");
+ else logi = logi.concat("\n");
+
logi = logi.concat(((kret.isOk())?"SUCCESS":"FAILURE")+": Testing installTrustlet, key "+((kret.isOk())?"\n":("returned: " +kret+" \n")));
logi = logi.concat(((err1ret.result()==CommandResult.ROOTPA_ERROR_ILLEGAL_ARGUMENT)?"SUCCESS":"FAILURE")+": Testing installTrustlet, both arguments given"+((err1ret.result()==CommandResult.ROOTPA_ERROR_ILLEGAL_ARGUMENT)?"\n":(", returned: " +err1ret+" \n")));
logi = logi.concat(((err2ret.result()==CommandResult.ROOTPA_ERROR_ILLEGAL_ARGUMENT)?"SUCCESS":"FAILURE")+": Testing installTrustlet, null arguments given"+((err2ret.result()==CommandResult.ROOTPA_ERROR_ILLEGAL_ARGUMENT)?"\n":(", returned: " +err2ret+" \n")));
diff --git a/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/TestProvisioningService.java b/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/TestProvisioningService.java
index c44786d..c3524bd 100755
--- a/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/TestProvisioningService.java
+++ b/rootpa/Test/Android/RootPAClient/src/com/gd/mobicore/pa/service/Test/TestProvisioningService.java
@@ -33,8 +33,8 @@
import android.app.Activity;
import android.os.Bundle;
-import android.content.Intent;
import android.os.IBinder;
+import android.content.Intent;
import android.content.ServiceConnection;
import android.content.ComponentName;
import android.content.Context;
@@ -145,7 +145,7 @@
try{
Log.d(TAG, "testDoProvisioning, errors from SE");
- TEST_WRONG_SPID = new SPID(12); // not really wrong spid but a spid that
+ TEST_WRONG_SPID = new SPID(12); // not really wrong spid but a spid that causes errors to be returned
res=testDoProvisioning(parent_.stringList_, TEST_WRONG_SPID);
}catch(Throwable e){
Log.e(TAG, "Executing testDoProvisioning, errors from SE, failed due to exception "+e);
@@ -190,7 +190,7 @@
}
public void onServiceDisconnected(ComponentName className){
- provisioningServiceIfc_=null;
+ disconnect();
}
/**
@@ -538,7 +538,8 @@
}
private boolean seErrorIntentsReceived(){
- return (intentsReceived_[0] && intentsReceived_[1] && !intentsReceived_[2] && !intentsReceived_[3] && intentsReceived_[4] && !intentsReceived_[5] && !intentsReceived_[6]);
+ Log.d(TAG, "seErrorIntentsReceived "+intentsReceived_[0] +" "+intentsReceived_[1] +" "+ !intentsReceived_[2] +" "+ intentsReceived_[3] +" "+ !intentsReceived_[4] +" "+ !intentsReceived_[5] +" "+ intentsReceived_[6]);
+ return (intentsReceived_[0] && intentsReceived_[1] && !intentsReceived_[2] && intentsReceived_[3] && !intentsReceived_[4] && !intentsReceived_[5] && intentsReceived_[6]);
}
private synchronized void markIntentReceived(int i){
@@ -647,7 +648,6 @@
overallsuccess=!overallsuccess?overallsuccess:(ret.isOk());
-
if(TEST_SPID!=null && spid==TEST_SPID){
overallsuccess=!overallsuccess?overallsuccess:(intentError_.isOk());
overallsuccess=!overallsuccess?overallsuccess:allIntentsReceived();
@@ -674,7 +674,7 @@
logi = logi.concat(((intentError_.isOk())?"SUCCESS":"FAILURE")+": Testing doProvisioning, intentError "+((intentError_.isOk())?"\n":("returned: " +intentError_+" \n")));
}else{
for(int i=0; i < 7; i++){
- if(0 == i || 1 == i || 4 == i ){ // in the error case not all intents are received
+ if(0 == i || 1 == i || 3 == i ){ // in the error case not all intents are received
logi = logi.concat(((intentsReceived_[i]==true)?"SUCCESS":"FAILURE")+": Testing doProvisioning, receiving intent["+i+"]\n");
}
}
diff --git a/rootpa/Test/Misc/cgi-bin/delete b/rootpa/Test/Misc/cgi-bin/delete
index 254e249..d05b055 100755
--- a/rootpa/Test/Misc/cgi-bin/delete
+++ b/rootpa/Test/Misc/cgi-bin/delete
@@ -28,7 +28,6 @@
sub handler {
my $r = shift;
- # handle POST requests
if ( $r->method() eq "DELETE" ) {
# handle DELETE requests
$r->log->notice("RootPATest.delete: Delete Command Received");
@@ -64,10 +63,34 @@
</commands>\
</ContentManagementRequest>";
-
-
} else {
- $r->log->notice("RootPATest.delete: HTTP command was not DELETE, but $r->method() returning cmp command for root cont delete");
+ # handle POST requests
+ if( $r->method() eq "POST" ) {
+ # create a post data buffer
+ my $PostBuffer = '';
+
+ # loop over each line of data
+ $r->log->notice("RootPATest.first: Post Command Received. Data:");
+ while($r->read($PostBuffer, 1024)) {
+ $r->log->notice("'$PostBuffer'");
+ }
+
+ $r->content_type('text/plain');
+
+ print "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> \
+ <ContentManagementRequest xmlns=\"http://www.mcore.gi-de.com/2012/04/schema/EnrollmentService\"> \
+ <commands>
+ <command id=\"9\" type=\"SO_UPLOAD\" ignoreError=\"false\"> \
+ <commandValue>AQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMDAwMDBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAgICAgJCQkJCQkJCQkJCQkJCQkJCQkJCQoKCgoKCgoKCgoKCgoKCgoKCgoKCwsLCwsLCwsLCwsLCwsLCwsLCws=</commandValue>
+ </command>
+ <command id=\"10\" type=\"TLT_UPLOAD\" ignoreError=\"false\"> \
+ <commandValue>AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ==</commandValue>\
+ </command>
+ </commands>
+ </ContentManagementRequest>";
+ } else {
+ $r->log->notice("RootPATest.delete: HTTP command was neither DELETE, nor POST but $r->method() returning cmp command for root cont delete or install trustlet");
+ }
}
return Apache2::Const::OK;
diff --git a/rootpa/Test/Misc/httpd.conf b/rootpa/Test/Misc/httpd.conf
index 64a2f08..74555df 100755
--- a/rootpa/Test/Misc/httpd.conf
+++ b/rootpa/Test/Misc/httpd.conf
@@ -31,18 +31,18 @@
#
-# intial DELETE uses this
-<Location /00000000445566778899aabbccddeeff>
+# intial POST/Install uses this
+<Location /00000000445566778899aabbccddeeff/10/03030303040404040505050506060606>
Header set Link <http://10.0.2.2/activity/00000000-4455-6677-8899-aabbccddee00>;rel="http://10.0.2.2/relation/command_result"
SetHandler perl-script
PerlResponseHandler ReceiveDeleteCommand
</Location>
-# intial POST/Install uses this
-<Location /00000000445566778899aabbccddeeff/0>
- Header set Link <http://10.0.2.2/activity/00000000-4455-6677-8899-aabbccddeef2>;rel="http://10.0.2.2/relation/command_result"
+# intial DELETE uses this
+<Location /00000000445566778899aabbccddeeff>
+ Header set Link <http://10.0.2.2/activity/00000000-4455-6677-8899-aabbccddee00>;rel="http://10.0.2.2/relation/command_result"
SetHandler perl-script
- PerlResponseHandler ReceiveFirstCommand
+ PerlResponseHandler ReceiveDeleteCommand
</Location>
# intial POST uses this