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.
47typedef 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 */
83typedef 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 */
172typedef 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