14e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park/** @addtogroup CMP
24e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * @{
34e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * @file
44e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * Interface to content management trustlet definitions.
54e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park *
64e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * The TlCm (Content Management Trustlet) is responsible for implementing
74e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * CMP commands and generating approriate CMP responses.
84e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park *
94e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * <!-- Copyright Giesecke & Devrient GmbH 2009-2012 -->
104e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park *
114e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * Redistribution and use in source and binary forms, with or without
124e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * modification, are permitted provided that the following conditions
134e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * are met:
144e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * 1. Redistributions of source code must retain the above copyright
154e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park *    notice, this list of conditions and the following disclaimer.
164e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * 2. Redistributions in binary form must reproduce the above copyright
174e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park *    notice, this list of conditions and the following disclaimer in the
184e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park *    documentation and/or other materials provided with the distribution.
194e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * 3. The name of the author may not be used to endorse or promote
204e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park *    products derived from this software without specific prior
214e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park *    written permission.
224e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park *
234e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
244e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
254e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
264e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
274e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
284e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
294e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
304e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
314e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
324e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
334e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
344e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park */
354e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
364e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park#ifndef TLCMAPI_H_
374e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park#define TLCMAPI_H_
384e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
394e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park#include "cmp.h"
404e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park#include "tlCmError.h"
414e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
424e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park/** TlCm command ids.
434e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * List of all commands supported by TlCm.
444e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * @note All command ids must be in range 0 to 0x7FFFFFFF.
454e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park */
464e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park//lint -esym(756, cmpCommands_t) cmpCommands_t type by itself not used.
474e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Parktypedef enum cmpCommands_t {
484e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_AUTHENTICATE = 0,
494e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION = 1,
504e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION = 2,
514e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_BEGIN_SP_AUTHENTICATION = 3,
524e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_GENERATE_AUTH_TOKEN = 4,
534e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_GET_VERSION = 5,
544e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park//  MC_CMP_CMD_ROOT_CONT_ACTIVATE = 6,
554e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT = 7,
564e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park//  MC_CMP_CMD_ROOT_CONT_REGISTER = 8,
574e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE = 9,
584e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT = 10,
594e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_ROOT_CONT_UNREGISTER = 11,
604e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_SP_CONT_ACTIVATE = 12,
614e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT = 13,
624e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_SP_CONT_LOCK_BY_SP = 14,
634e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_SP_CONT_REGISTER = 15,
644e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE = 16,
654e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT = 17,
664e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP = 18,
674e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_SP_CONT_UNREGISTER = 19,
684e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_TLT_CONT_ACTIVATE = 20,
694e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_TLT_CONT_LOCK_BY_SP = 21,
704e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_TLT_CONT_PERSONALIZE = 22,
714e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_TLT_CONT_REGISTER = 23,
724e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE = 24,
734e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP = 25,
744e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_TLT_CONT_UNREGISTER = 26,
754e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_GET_SUID = 27,
764e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_AUTHENTICATE_TERMINATE = 28,
774e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    MC_CMP_CMD_LAST_ = MC_CMP_CMD_AUTHENTICATE_TERMINATE,
784e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park} cmpCommands_t;
794e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
804e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park/**
814e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * CMP Content Manager message data.
824e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park */
834e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Parktypedef union {
844e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCommandHeader_t commandHeader;
854e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpResponseHeader_t responseHeader;
864e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
874e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdGetVersion_t cmpCmdGetVersion;
884e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspGetVersion_t cmpRspGetVersion;
894e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
904e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdBeginSocAuthentication_t cmpCmdBeginSocAuthentication;
914e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspBeginSocAuthentication_t cmpRspBeginSocAuthentication;
924e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
934e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdBeginRootAuthentication_t cmpCmdBeginRootAuthentication;
944e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspBeginRootAuthentication_t cmpRspBeginRootAuthentication;
954e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
964e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdBeginSpAuthentication_t cmpCmdBeginSpAuthentication;
974e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspBeginSpAuthentication_t cmpRspBeginSpAuthentication;
984e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
994e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdAuthenticate_t cmpCmdAuthenticate;
1004e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspAuthenticate_t cmpRspAuthenticate;
1014e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1024e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdGenAuthToken_t cmpCmdGenAuthToken;
1034e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspGenAuthToken_t cmpRspGenAuthToken;
1044e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1054e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdRootContRegisterActivate_t cmpCmdRootContRegisterActivate;
1064e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspRootContRegisterActivate_t cmpRspRootContRegisterActivate;
1074e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1084e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdRootContUnregister_t cmpCmdRootContUnregister;
1094e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspRootContUnregister_t cmpRspRootContUnregister;
1104e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1114e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdRootContLockByRoot_t cmpCmdRootContLockByRoot;
1124e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspRootContLockByRoot_t cmpRspRootContLockByRoot;
1134e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1144e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdRootContUnlockByRoot_t cmpCmdRootContUnlockByRoot;
1154e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspRootContUnlockByRoot_t cmpRspRootContUnlockByRoot;
1164e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1174e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdSpContRegisterActivate_t cmpCmdSpContRegisterActivate;
1184e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspSpContRegisterActivate_t cmpRspSpContRegisterActivate;
1194e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1204e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdSpContUnregister_t cmpCmdSpContUnregister;
1214e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspSpContUnregister_t cmpRspSpContUnregister;
1224e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1234e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdSpContLockByRoot_t cmpCmdSpContLockByRoot;
1244e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspSpContLockByRoot_t cmpRspSpContLockByRoot;
1254e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1264e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdSpContUnlockByRoot_t cmpCmdSpContUnlockByRoot;
1274e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspSpContUnlockByRoot_t cmpRspSpContUnlockByRoot;
1284e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1294e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdSpContLockBySp_t cmpCmdSpContLockBySp;
1304e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspSpContLockBySp_t cmpRspSpContLockBySp;
1314e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1324e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdSpContUnlockBySp_t cmpCmdSpContUnlockBySp;
1334e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspSpContUnlockBySp_t cmpRspSpContUnlockBySp;
1344e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1354e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdTltContRegister_t cmpCmdTltContRegister;
1364e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspTltContRegister_t cmpRspTltContRegister;
1374e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1384e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdTltContActivate_t cmpCmdTltContActivate;
1394e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspTltContActivate_t cmpRspTltContActivate;
1404e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1414e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdTltContRegisterActivate_t cmpCmdTltContRegisterActivate;
1424e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspTltContRegisterActivate_t cmpRspTltContRegisterActivate;
1434e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1444e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdTltContLockBySp_t cmpCmdTltContLockBySp;
1454e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspTltContLockBySp_t cmpRspTltContLockBySp;
1464e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1474e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdTltContUnlockBySp_t cmpCmdTltContUnlockBySp;
1484e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspTltContUnlockBySp_t cmpRspTltContUnlockBySp;
1494e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1504e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdTltContUnregister_t cmpCmdTltContUnregister;
1514e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspTltContUnregister_t cmpRspTltContUnregister;
1524e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1534e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdGetSuid_t cmpCmdGetSuid;
1544e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspGetSuid_t cmpRspGetSuid;
1554e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1564e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdAuthenticateTerminate_t cmpCmdAuthenticateTerminate;
1574e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspAuthenticateTerminate_t cmpRspAuthenticateTerminate;
1584e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1594e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdTltContPersonalize_t cmpCmdTltContPersonalize;
1604e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspTltContPersonalize_t cmpRspTltContPersonalize;
1614e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1624e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdSpContRegister_t cmpCmdSpContRegister;
1634e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspSpContRegister_t cmpRspSpContRegister;
1644e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1654e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpCmdSpContActivate_t cmpCmdSpContActivate;
1664e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpRspSpContActivate_t cmpRspSpContActivate;
1674e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park} cmpMessage_t;
1684e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1694e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park/**
1704e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * Overall CMP structure.
1714e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park */
1724e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Parktypedef struct {
1734e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    /** CMP message. */
1744e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park    cmpMessage_t msg;
1754e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park} cmp_t;
1764e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1774e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park/**
1784e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park * TlCm exit code: TlCm exited with error.
1794e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park */
1804e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park#define EXIT_ERROR  ((uint32_t)(-1))
1814e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1824e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park#endif // TLCMAPI_H_
1834e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park
1844e9e8c9c0169b40318386436d762c3d73cf4c328DongJin Park/** @} */
185