1 /*
2  * Copyright 2018-2021 NXP
3  * All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 #ifndef FSL_SSCP_COMMANDS_H
8 #define FSL_SSCP_COMMANDS_H
9 
10 #if !defined(SSCP_CONFIG_FILE)
11 #include "fsl_sscp_config_elemu.h"
12 #else
13 #include SSCP_CONFIG_FILE
14 #endif
15 
16 /*!
17 @defgroup sscp_cmd SSCP commands
18 @details This section describes the SSCP commands and parameters.
19 @ingroup sscp
20 */
21 /*!
22  * @addtogroup sscp_cmd
23  * @{
24  */
25 
26 #if !defined(SSCP_COMMAND_ENUM_ALT)
27 /*! @brief SSCP common commands */
28 typedef enum
29 {
30     kSSCP_CMD_SSS_OpenSession,
31     kSSCP_CMD_SSS_CloseSession,
32     kSSCP_CMD_SSS_Ping,
33     kSSCP_CMD_SSS_ContextFree,
34     kSSCP_CMD_SSS_SymmetricContextInit,
35     kSSCP_CMD_SSS_SymmetricCipherOneGo,
36     kSSCP_CMD_SSS_SymmetricCipherInit,
37     kSSCP_CMD_SSS_SymmetricCipherUpdate,
38     kSSCP_CMD_SSS_SymmetricCipherFinish,
39     kSSCP_CMD_SSS_SymmetricCryptCtr,
40     kSSCP_CMD_SSS_AeadContextInit,
41     kSSCP_CMD_SSS_AeadOneGo,
42     kSSCP_CMD_SSS_AeadInit,
43     kSSCP_CMD_SSS_AeadUpdateAead,
44     kSSCP_CMD_SSS_AeadUpdate,
45     kSSCP_CMD_SSS_AeadFinish,
46     kSSCP_CMD_SSS_DigestContextInit,
47     kSSCP_CMD_SSS_DigestOneGo,
48     kSSCP_CMD_SSS_DigestInit,
49     kSSCP_CMD_SSS_DigestUpdate,
50     kSSCP_CMD_SSS_DigestFinish,
51     kSSCP_CMD_SSS_MacContextInit,
52     kSSCP_CMD_SSS_MacOneGo,
53     kSSCP_CMD_SSS_MacInit,
54     kSSCP_CMD_SSS_MacUpdate,
55     kSSCP_CMD_SSS_MacFinish,
56     kSSCP_CMD_SSS_AsymetricContextInit,
57     kSSCP_CMD_SSS_AsymmetricEncrypt,
58     kSSCP_CMD_SSS_AsymmetricDecrypt,
59     kSSCP_CMD_SSS_AsymmetricSignDigest,
60     kSSCP_CMD_SSS_AsymmetricVerifyDigest,
61     kSSCP_CMD_SSS_TunnelContextInit,
62     kSSCP_CMD_SSS_Tunnel,
63     kSSCP_CMD_SSS_DeriveKeyContextInit,
64     kSSCP_CMD_SSS_DeriveKey,
65     kSSCP_CMD_SSS_AsymmetricDeriveKey,
66     kSSCP_CMD_SSS_KeyObjectContextInit,
67     kSSCP_CMD_SSS_KeyObjectAllocateHandle,
68     kSSCP_CMD_SSS_KeyObjectGetHandle,
69     kSSCP_CMD_SSS_KeyObjectContextFree,
70     kSSCP_CMD_SSS_KeyStoreContextInit,
71     kSSCP_CMD_SSS_KeyStoreAllocate,
72     kSSCP_CMD_SSS_KeyStoreSave,
73     kSSCP_CMD_SSS_KeyStoreLoad,
74     kSSCP_CMD_SSS_KeyStoreSetKey,
75     kSSCP_CMD_SSS_KeyStoreGenerateKey,
76     kSSCP_CMD_SSS_KeyStoreGetKey,
77     kSSCP_CMD_SSS_KeyStoreOpenKey,
78     kSSCP_CMD_SSS_KeyStoreFreezeKey,
79     kSSCP_CMD_SSS_KeyStoreEraseKey,
80     kSSCP_CMD_SSS_KeyStoreEraseAll,
81     KSSCP_CMD_SSS_RngGet,
82     kSSCP_CMD_SSS_MGMT_ContextInit,
83     kSSCP_CMD_SSS_MGMT_FuseRead,
84     kSSCP_CMD_SSS_MGMT_FuseShadowRegisterRead,
85     kSSCP_CMD_SSS_MGMT_FuseProgram,
86     kSSCP_CMD_SSS_MGMT_PropertyGet,
87     kSSCP_CMD_SSS_MGMT_LifeCycleGet,
88     kSSCP_CMD_SSS_MGMT_PropertySet,
89     kSSCP_CMD_SSS_MGMT_AdvanceLifecycle,
90     kSSCP_CMD_SSS_MGMT_SecretImport,
91     kSSCP_CMD_SSS_MGMT_SecretExport,
92     kSSCP_CMD_SSS_MGMT_Attest,
93     kSSCP_CMD_SSS_MGMT_SecretBlobLoad,
94     kSSCP_CMD_SSS_MGMT_SecretBlobExport,
95     kSSCP_CMD_SSS_MGMT_SecretBlobImport,
96     kSSCP_CMD_SSS_MGMT_SoftwareVersionGet,
97     kSSCP_CMD_SSS_MGMT_ReturnFaSet,
98     kSSCP_CMD_SSS_MGMT_HostAccessPermissionSet,
99     kSSCP_CMD_SSS_MGMT_IntegrityCheckEnable,
100 
101     /* TODO: Remove TEE */
102     TEE_CMD_NONE,
103     TEE_CMD_GENERATE_KEY,
104     TEE_CMD_ERASE_KEY,
105     TEE_CMD_GET_KEY,
106     TEE_CMD_FREEZE_KEY,
107     // TEE_CMD_ALLOCATE_KEY,
108     TEE_CMD_ALLOCATE_KEYSTORE,
109     TEE_CMD_SAVE_KEYSTORE,
110     TEE_CMD_LOAD_KEYSTORE,
111     TEE_CMD_SET_KEY,
112     TEE_KEYOBJ_CMD_ALLOCATE_HANDLE,
113     TEE_KEYOBJ_CMD_GET_HANDLE,
114     TEE_KEYOBJ_CMD_SET_USER,
115     TEE_KEYOBJ_CMD_SET_PURPOSE,
116     TEE_KEYOBJ_CMD_SET_ACCESS,
117     TEE_KEYOBJ_CMD_GET_USER,
118     TEE_KEYOBJ_CMD_GET_PURPOSE,
119     TEE_KEYOBJ_CMD_GET_ACCESS,
120     TEE_ASYMMETRIC_CTX_INIT,
121     TEE_ASYMMETRIC_CMD_ENCRYPT,
122     TEE_ASYMMETRIC_CMD_DECRYPT,
123     TEE_ASYMMETRIC_CMD_SIGN_DIGEST,
124     TEE_ASYMMETRIC_CMD_VERIFY_DIGEST,
125     TEE_SYMM_CIPHER_CTX_INIT,
126     TEE_SYMM_CIPHER_ONE_GO,
127     TEE_SYMM_CIPHER_INIT,
128     TEE_SYMM_CIPHER_UPDATE,
129     TEE_SYMM_CIPHER_FINISH,
130     TEE_SYMM_CIPHER_CRYPT_CTR,
131     TEE_DERIVE_CTX_INIT,
132     TEE_DERIVE_KEY,
133     TEE_ASYMM_DH_DERIVE_KEY,
134     TEE_CMD_LAST
135 } sscp_command_t;
136 #endif /* SSCP_COMMAND_ENUM_ALT */
137 
138 #if !defined(SSCP_PARAMCONTEXTTYPE_ENUM_ALT)
139 /*! @brief SSCP ParamContextType list */
140 enum
141 {
142     kSSCP_ParamContextType_SSS_Session = 0x1u,
143     kSSCP_ParamContextType_SSS_Symmetric,
144     kSSCP_ParamContextType_SSS_Aead,
145     kSSCP_ParamContextType_SSS_Digest,
146     kSSCP_ParamContextType_SSS_Mac,
147     kSSCP_ParamContextType_SSS_Asymmetric,
148     kSSCP_ParamContextType_SSS_Tunnel,
149     kSSCP_ParamContextType_SSS_DeriveKey,
150     kSSCP_ParamContextType_SSS_Object,
151     kSSCP_ParamContextType_SSS_KeyStore,
152     kSSCP_ParamContextType_SSS_KeyStoreCtx,
153     kSSCP_ParamContextType_SSS_Mgmt,
154     kSSCP_ParamContextType_SSS_Rng,
155 };
156 #endif /* SSCP_PARAMCONTEXTTYPE_ENUM_ALT */
157 
158 /*!
159  *@}
160  */ /* end of sscp */
161 
162 #endif /* FSL_SSCP_COMMANDS_H */
163