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(&paramsP->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