Home | History | Annotate | Download | only in TlCm
      1 /** @addtogroup CMP
      2  * @{
      3  * @file
      4  * Interface to content management trustlet definitions.
      5  *
      6  * The TlCm (Content Management Trustlet) is responsible for implementing
      7  * CMP commands and generating approriate CMP responses.
      8  *
      9  * <!-- Copyright Giesecke & Devrient GmbH 2009-2012 -->
     10  *
     11  * Redistribution and use in source and binary forms, with or without
     12  * modification, are permitted provided that the following conditions
     13  * are met:
     14  * 1. Redistributions of source code must retain the above copyright
     15  *    notice, this list of conditions and the following disclaimer.
     16  * 2. Redistributions in binary form must reproduce the above copyright
     17  *    notice, this list of conditions and the following disclaimer in the
     18  *    documentation and/or other materials provided with the distribution.
     19  * 3. The name of the author may not be used to endorse or promote
     20  *    products derived from this software without specific prior
     21  *    written permission.
     22  *
     23  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
     24  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     25  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     26  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
     27  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
     29  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     30  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     31  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     32  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     33  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     34  */
     35 
     36 #ifndef TLCMAPI_H_
     37 #define TLCMAPI_H_
     38 
     39 #include "cmp.h"
     40 #include "tlCmError.h"
     41 
     42 /** TlCm command ids.
     43  * List of all commands supported by TlCm.
     44  * @note All command ids must be in range 0 to 0x7FFFFFFF.
     45  */
     46 //lint -esym(756, cmpCommands_t) cmpCommands_t type by itself not used.
     47 typedef enum cmpCommands_t {
     48     MC_CMP_CMD_AUTHENTICATE = 0,
     49     MC_CMP_CMD_BEGIN_ROOT_AUTHENTICATION = 1,
     50     MC_CMP_CMD_BEGIN_SOC_AUTHENTICATION = 2,
     51     MC_CMP_CMD_BEGIN_SP_AUTHENTICATION = 3,
     52     MC_CMP_CMD_GENERATE_AUTH_TOKEN = 4,
     53     MC_CMP_CMD_GET_VERSION = 5,
     54 //  MC_CMP_CMD_ROOT_CONT_ACTIVATE = 6,
     55     MC_CMP_CMD_ROOT_CONT_LOCK_BY_ROOT = 7,
     56 //  MC_CMP_CMD_ROOT_CONT_REGISTER = 8,
     57     MC_CMP_CMD_ROOT_CONT_REGISTER_ACTIVATE = 9,
     58     MC_CMP_CMD_ROOT_CONT_UNLOCK_BY_ROOT = 10,
     59     MC_CMP_CMD_ROOT_CONT_UNREGISTER = 11,
     60     MC_CMP_CMD_SP_CONT_ACTIVATE = 12,
     61     MC_CMP_CMD_SP_CONT_LOCK_BY_ROOT = 13,
     62     MC_CMP_CMD_SP_CONT_LOCK_BY_SP = 14,
     63     MC_CMP_CMD_SP_CONT_REGISTER = 15,
     64     MC_CMP_CMD_SP_CONT_REGISTER_ACTIVATE = 16,
     65     MC_CMP_CMD_SP_CONT_UNLOCK_BY_ROOT = 17,
     66     MC_CMP_CMD_SP_CONT_UNLOCK_BY_SP = 18,
     67     MC_CMP_CMD_SP_CONT_UNREGISTER = 19,
     68     MC_CMP_CMD_TLT_CONT_ACTIVATE = 20,
     69     MC_CMP_CMD_TLT_CONT_LOCK_BY_SP = 21,
     70     MC_CMP_CMD_TLT_CONT_PERSONALIZE = 22,
     71     MC_CMP_CMD_TLT_CONT_REGISTER = 23,
     72     MC_CMP_CMD_TLT_CONT_REGISTER_ACTIVATE = 24,
     73     MC_CMP_CMD_TLT_CONT_UNLOCK_BY_SP = 25,
     74     MC_CMP_CMD_TLT_CONT_UNREGISTER = 26,
     75     MC_CMP_CMD_GET_SUID = 27,
     76     MC_CMP_CMD_AUTHENTICATE_TERMINATE = 28,
     77     MC_CMP_CMD_LAST_ = MC_CMP_CMD_AUTHENTICATE_TERMINATE,
     78 } cmpCommands_t;
     79 
     80 /**
     81  * CMP Content Manager message data.
     82  */
     83 typedef union {
     84     cmpCommandHeader_t commandHeader;
     85     cmpResponseHeader_t responseHeader;
     86 
     87     cmpCmdGetVersion_t cmpCmdGetVersion;
     88     cmpRspGetVersion_t cmpRspGetVersion;
     89 
     90     cmpCmdBeginSocAuthentication_t cmpCmdBeginSocAuthentication;
     91     cmpRspBeginSocAuthentication_t cmpRspBeginSocAuthentication;
     92 
     93     cmpCmdBeginRootAuthentication_t cmpCmdBeginRootAuthentication;
     94     cmpRspBeginRootAuthentication_t cmpRspBeginRootAuthentication;
     95 
     96     cmpCmdBeginSpAuthentication_t cmpCmdBeginSpAuthentication;
     97     cmpRspBeginSpAuthentication_t cmpRspBeginSpAuthentication;
     98 
     99     cmpCmdAuthenticate_t cmpCmdAuthenticate;
    100     cmpRspAuthenticate_t cmpRspAuthenticate;
    101 
    102     cmpCmdGenAuthToken_t cmpCmdGenAuthToken;
    103     cmpRspGenAuthToken_t cmpRspGenAuthToken;
    104 
    105     cmpCmdRootContRegisterActivate_t cmpCmdRootContRegisterActivate;
    106     cmpRspRootContRegisterActivate_t cmpRspRootContRegisterActivate;
    107 
    108     cmpCmdRootContUnregister_t cmpCmdRootContUnregister;
    109     cmpRspRootContUnregister_t cmpRspRootContUnregister;
    110 
    111     cmpCmdRootContLockByRoot_t cmpCmdRootContLockByRoot;
    112     cmpRspRootContLockByRoot_t cmpRspRootContLockByRoot;
    113 
    114     cmpCmdRootContUnlockByRoot_t cmpCmdRootContUnlockByRoot;
    115     cmpRspRootContUnlockByRoot_t cmpRspRootContUnlockByRoot;
    116 
    117     cmpCmdSpContRegisterActivate_t cmpCmdSpContRegisterActivate;
    118     cmpRspSpContRegisterActivate_t cmpRspSpContRegisterActivate;
    119 
    120     cmpCmdSpContUnregister_t cmpCmdSpContUnregister;
    121     cmpRspSpContUnregister_t cmpRspSpContUnregister;
    122 
    123     cmpCmdSpContLockByRoot_t cmpCmdSpContLockByRoot;
    124     cmpRspSpContLockByRoot_t cmpRspSpContLockByRoot;
    125 
    126     cmpCmdSpContUnlockByRoot_t cmpCmdSpContUnlockByRoot;
    127     cmpRspSpContUnlockByRoot_t cmpRspSpContUnlockByRoot;
    128 
    129     cmpCmdSpContLockBySp_t cmpCmdSpContLockBySp;
    130     cmpRspSpContLockBySp_t cmpRspSpContLockBySp;
    131 
    132     cmpCmdSpContUnlockBySp_t cmpCmdSpContUnlockBySp;
    133     cmpRspSpContUnlockBySp_t cmpRspSpContUnlockBySp;
    134 
    135     cmpCmdTltContRegister_t cmpCmdTltContRegister;
    136     cmpRspTltContRegister_t cmpRspTltContRegister;
    137 
    138     cmpCmdTltContActivate_t cmpCmdTltContActivate;
    139     cmpRspTltContActivate_t cmpRspTltContActivate;
    140 
    141     cmpCmdTltContRegisterActivate_t cmpCmdTltContRegisterActivate;
    142     cmpRspTltContRegisterActivate_t cmpRspTltContRegisterActivate;
    143 
    144     cmpCmdTltContLockBySp_t cmpCmdTltContLockBySp;
    145     cmpRspTltContLockBySp_t cmpRspTltContLockBySp;
    146 
    147     cmpCmdTltContUnlockBySp_t cmpCmdTltContUnlockBySp;
    148     cmpRspTltContUnlockBySp_t cmpRspTltContUnlockBySp;
    149 
    150     cmpCmdTltContUnregister_t cmpCmdTltContUnregister;
    151     cmpRspTltContUnregister_t cmpRspTltContUnregister;
    152 
    153     cmpCmdGetSuid_t cmpCmdGetSuid;
    154     cmpRspGetSuid_t cmpRspGetSuid;
    155 
    156     cmpCmdAuthenticateTerminate_t cmpCmdAuthenticateTerminate;
    157     cmpRspAuthenticateTerminate_t cmpRspAuthenticateTerminate;
    158 
    159     cmpCmdTltContPersonalize_t cmpCmdTltContPersonalize;
    160     cmpRspTltContPersonalize_t cmpRspTltContPersonalize;
    161 
    162     cmpCmdSpContRegister_t cmpCmdSpContRegister;
    163     cmpRspSpContRegister_t cmpRspSpContRegister;
    164 
    165     cmpCmdSpContActivate_t cmpCmdSpContActivate;
    166     cmpRspSpContActivate_t cmpRspSpContActivate;
    167 } cmpMessage_t;
    168 
    169 /**
    170  * Overall CMP structure.
    171  */
    172 typedef struct {
    173     /** CMP message. */
    174     cmpMessage_t msg;
    175 } cmp_t;
    176 
    177 /**
    178  * TlCm exit code: TlCm exited with error.
    179  */
    180 #define EXIT_ERROR  ((uint32_t)(-1))
    181 
    182 #endif // TLCMAPI_H_
    183 
    184 /** @} */
    185