1 /*
2 * Copyright (c) 2020 - 2024 Renesas Electronics Corporation and/or its affiliates
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6 
7 /**********************************************************************************************************************
8  * Includes   <System Includes> , "Project Includes"
9  *********************************************************************************************************************/
10 #ifndef HW_SCE_RA_PRIVATE_HEADER_FILE
11 #define HW_SCE_RA_PRIVATE_HEADER_FILE
12 
13 #include "hw_sce_aes_private.h"
14 
15 /**********************************************************************************************************************
16  * Macro definitions
17  *********************************************************************************************************************/
18 
19 #define SIZE_AES_GCM_IN_DATA_BYTES                       (256)
20 #define SIZE_AES_GCM_IN_DATA_IV_LEN_BYTES                (16)
21 #define SIZE_AES_GCM_IN_DATA_IV_GCM_LEN_BYTES            (512)
22 #define SIZE_AES_GCM_IN_DATA_AAD_LEN_BYTES               (128)
23 
24 #define SCE_AES_GCM_IN_DATA_IV_LEN_LOC                   (32)
25 
26 #define SCE_AES_IN_DATA_CMD_ECB_ENCRYPTION               (0x00000000U)
27 #define SCE_AES_IN_DATA_CMD_ECB_DECRYPTION               (0x00000001U)
28 #define SCE_AES_IN_DATA_CMD_CBC_ENCRYPTION               (0x00000002U)
29 #define SCE_AES_IN_DATA_CMD_CBC_DECRYPTION               (0x00000003U)
30 #define SCE_AES_IN_DATA_CMD_CTR_ENCRYPTION_DECRYPTION    (0x00000004U)
31 
32 #define SCE_AES_IN_DATA_CMD_CCM_128_ENC_COMMON_INIT      (0U)
33 #define SCE_AES_IN_DATA_CMD_CCM_192_ENC_COMMON_INIT      (1U)
34 #define SCE_AES_IN_DATA_CMD_CCM_256_ENC_COMMON_INIT      (2U)
35 #define SCE_AES_IN_DATA_CMD_CCM_ENC_COUNTER_GENERATE     (3U)
36 #define SCE_AES_IN_DATA_CMD_CCM_ENC_FORMAT_A_DATA        (4U)
37 #define SCE_AES_IN_DATA_CMD_CCM_ENC_CTR_ENCRYPT          (5U)
38 #define SCE_AES_IN_DATA_CMD_CCM_ENC_GENERATE_TAG         (6U)
39 #define SCE_AES_IN_DATA_CMD_CCM_128_DEC_COMMON_INIT      (7U)
40 #define SCE_AES_IN_DATA_CMD_CCM_192_DEC_COMMON_INIT      (8U)
41 #define SCE_AES_IN_DATA_CMD_CCM_256_DEC_COMMON_INIT      (9U)
42 #define SCE_AES_IN_DATA_CMD_CCM_DEC_COUNTER_GENERATE     (10U)
43 #define SCE_AES_IN_DATA_CMD_CCM_DEC_CTR_DECRYPT          (11U)
44 #define SCE_AES_IN_DATA_CMD_CCM_DEC_FORMAT_A_DATA        (12U)
45 #define SCE_AES_IN_DATA_CMD_CCM_DEC_FORMAT_PAYLOAD       (13U)
46 #define SCE_AES_IN_DATA_CMD_CCM_DEC_GENERATE_TAG         (14U)
47 
48 /* Wrapped keys not supported on RA2; these definitions are added to let the code compile. */
49 #define SIZE_AES_128BIT_KEYLEN_BITS_WRAPPED              (1)
50 #define SIZE_AES_128BIT_KEYLEN_BYTES_WRAPPED             ((SIZE_AES_128BIT_KEYLEN_BITS_WRAPPED) / 8)
51 #define SIZE_AES_128BIT_KEYLEN_WORDS_WRAPPED             ((SIZE_AES_128BIT_KEYLEN_BITS_WRAPPED) / 32)
52 
53 #define SIZE_AES_192BIT_KEYLEN_BITS_WRAPPED              (2) /* 192 not supported on SCE5 */
54 #define SIZE_AES_192BIT_KEYLEN_BYTES_WRAPPED             ((SIZE_AES_192BIT_KEYLEN_BITS_WRAPPED) / 8)
55 #define SIZE_AES_192BIT_KEYLEN_WORDS_WRAPPED             ((SIZE_AES_192BIT_KEYLEN_BITS_WRAPPED) / 32)
56 
57 #define SIZE_AES_256BIT_KEYLEN_BITS_WRAPPED              (3)
58 #define SIZE_AES_256BIT_KEYLEN_BYTES_WRAPPED             ((SIZE_AES_256BIT_KEYLEN_BITS_WRAPPED) / 8)
59 #define SIZE_AES_256BIT_KEYLEN_WORDS_WRAPPED             ((SIZE_AES_256BIT_KEYLEN_BITS_WRAPPED) / 32)
60 
61 #define R_AES_AESCNTH_INIT                               (0x8000UL) /*!< AESCNTH initialization: Initialization AES Circuit                                                               */
62 #define R_AES_AESCNTH_DEINIT                             (0x0000UL) /*!< AESCNTH deinitialization: Don’t Initialize AES Circuit                                                           */
63 #define R_AES_AESCNTL_GCM_MODE                           (0x00A0UL) /*!< AESCNTL: Assign bit of Cipher use Mode: GCM mode                                                                 */
64 #define R_AES_AESCNTL_128_DEC                            (0x0008UL) /*!< AESCNTL: Decryption 128 bit (Bit 0-3 Selection bit of Encryption/Decryption and Key Length)                      */
65 
66 #define R_AES_AESCNTL_CBC_128_ENC                        (0x0000UL) /*!< AESCNTL: Encryption - CBC mode - 128 bits                                                                        */
67 #define R_AES_AESCNTL_CBC_192_ENC                        (0x0002UL) /*!< AESCNTL: Encryption - CBC mode - 192 bits                                                                        */
68 #define R_AES_AESCNTL_CBC_256_ENC                        (0x0004UL) /*!< AESCNTL: Encryption - CBC mode - 256 bits                                                                        */
69 #define R_AES_AESCNTL_CBC_128_DEC                        (0x0008UL) /*!< AESCNTL: Decryption - CBC mode - 128 bits                                                                        */
70 #define R_AES_AESCNTL_CBC_192_DEC                        (0x000AUL) /*!< AESCNTL: Decryption - CBC mode - 128 bits                                                                        */
71 #define R_AES_AESCNTL_CBC_256_DEC                        (0x000CUL) /*!< AESCNTL: Decryption - CBC mode - 128 bits                                                                        */
72 
73 #define R_AES_AESCNTL_ECB_128_ENC                        (0x0010UL) /*!< AESCNTL: Encryption - ECB mode - 128 bits                                                                        */
74 #define R_AES_AESCNTL_ECB_192_ENC                        (0x0012UL) /*!< AESCNTL: Encryption - ECB mode - 192 bits                                                                        */
75 #define R_AES_AESCNTL_ECB_256_ENC                        (0x0014UL) /*!< AESCNTL: Encryption - ECB mode - 256 bits                                                                        */
76 #define R_AES_AESCNTL_ECB_128_DEC                        (0x0018UL) /*!< AESCNTL: Decryption - ECB mode - 128 bits                                                                        */
77 #define R_AES_AESCNTL_ECB_192_DEC                        (0x001AUL) /*!< AESCNTL: Decryption - ECB mode - 128 bits                                                                        */
78 #define R_AES_AESCNTL_ECB_256_DEC                        (0x001CUL) /*!< AESCNTL: Decryption - ECB mode - 128 bits                                                                        */
79 
80 #define R_AES_AESCNTL_CTR_128_ENC                        (0x0040UL) /*!< AESCNTL: Encryption - CTR mode - 128 bits                                                                        */
81 #define R_AES_AESCNTL_CTR_192_ENC                        (0x0042UL) /*!< AESCNTL: Encryption - CTR mode - 192 bits                                                                        */
82 #define R_AES_AESCNTL_CTR_256_ENC                        (0x0044UL) /*!< AESCNTL: Encryption - CTR mode - 256 bits                                                                        */
83 #define R_AES_AESCNTL_CTR_128_DEC                        (0x0048UL) /*!< AESCNTL: Decryption - CTR mode - 128 bits                                                                        */
84 #define R_AES_AESCNTL_CTR_192_DEC                        (0x004AUL) /*!< AESCNTL: Decryption - CTR mode - 128 bits                                                                        */
85 #define R_AES_AESCNTL_CTR_256_DEC                        (0x004CUL) /*!< AESCNTL: Decryption - CTR mode - 128 bits                                                                        */
86 
87 #define R_AES_AESCNTL_CMAC_128_ENC                       (0x0080UL) /*!< AESCNTL: Encryption - CMAC mode - 128 bits                                                                        */
88 #define R_AES_AESCNTL_CMAC_192_ENC                       (0x0082UL) /*!< AESCNTL: Encryption - CMAC mode - 192 bits                                                                        */
89 #define R_AES_AESCNTL_CMAC_256_ENC                       (0x0084UL) /*!< AESCNTL: Encryption - CMAC mode - 256 bits                                                                        */
90 #define R_AES_AESCNTL_CMAC_128_DEC                       (0x0088UL) /*!< AESCNTL: Decryption - CMAC mode - 128 bits                                                                        */
91 #define R_AES_AESCNTL_CMAC_192_DEC                       (0x008AUL) /*!< AESCNTL: Decryption - CMAC mode - 128 bits                                                                        */
92 #define R_AES_AESCNTL_CMAC_256_DEC                       (0x008CUL) /*!< AESCNTL: Decryption - CMAC mode - 128 bits                                                                        */
93 
94 #define R_AES_AESCNTL_GCM_128_ENC                        (0x00A0UL) /*!< AESCNTL: Encryption - GCM mode - 128 bits                                                                        */
95 #define R_AES_AESCNTL_GCM_192_ENC                        (0x00A2UL) /*!< AESCNTL: Encryption - GCM mode - 192 bits                                                                        */
96 #define R_AES_AESCNTL_GCM_256_ENC                        (0x00A4UL) /*!< AESCNTL: Encryption - GCM mode - 256 bits                                                                        */
97 #define R_AES_AESCNTL_GCM_128_DEC                        (0x00A8UL) /*!< AESCNTL: Decryption - GCM mode - 128 bits                                                                        */
98 #define R_AES_AESCNTL_GCM_192_DEC                        (0x00AAUL) /*!< AESCNTL: Decryption - GCM mode - 128 bits                                                                        */
99 #define R_AES_AESCNTL_GCM_256_DEC                        (0x00ACUL) /*!< AESCNTL: Decryption - GCM mode - 128 bits                                                                        */
100 
101 #define R_AES_AESCNTL_CCM_128_ENC                        (0x00C0UL) /*!< AESCNTL: Encryption - CCM mode - 128 bits                                                                        */
102 #define R_AES_AESCNTL_CCM_192_ENC                        (0x00C2UL) /*!< AESCNTL: Encryption - CCM mode - 192 bits                                                                        */
103 #define R_AES_AESCNTL_CCM_256_ENC                        (0x00C4UL) /*!< AESCNTL: Encryption - CCM mode - 256 bits                                                                        */
104 #define R_AES_AESCNTL_CCM_128_DEC                        (0x00C8UL) /*!< AESCNTL: Decryption - CCM mode - 128 bits                                                                        */
105 #define R_AES_AESCNTL_CCM_192_DEC                        (0x00CAUL) /*!< AESCNTL: Decryption - CCM mode - 128 bits                                                                        */
106 #define R_AES_AESCNTL_CCM_256_DEC                        (0x00CCUL) /*!< AESCNTL: Decryption - CCM mode - 128 bits                                                                        */
107 
108 #define R_AES_AESDCNTL_BIT_2_3_MODE_1                    (0x0008UL) /*!< AESDCNTL: Key update assign bit: Enable + First block contents control assign bit: Use (AES-ECB, AES-GCM)        */
109 #define R_AES_AESDCNTL_BIT_2_3_MODE_2                    (0x000CUL) /*!< AESDCNTL: Key update assign bit: Enable + First block contents control assign bit: Not use (AES-CBC, AES-CTR)    */
110 #define R_AES_AESDCNTL_CALCULATE_START                   (0x0003UL) /*!< AESDCNTL: Start AES calculation - Start reflect AES Encryption/Decryption calculation result to AESODATnRegister */
111 #define R_AES_AESDCNTL_BIT_2                             (0x0004UL) /*!< AESDCNTL: Bit 2                                                                                                  */
112 #define R_AES_AESDCNTL_BIT_3                             (0x0008UL) /*!< AESDCNTL: Bit 3                                                                                                  */
113 #define R_AES_AESDCNTL_BIT_4                             (0x0010UL) /*!< AESDCNTL: Bit 4                                                                                                  */
114 #define R_AES_AESDCNTL_BIT_5                             (0x0020UL) /*!< AESDCNTL: Bit 5                                                                                                  */
115 #define R_AES_AESDCNTL_BIT_6                             (0x0040UL) /*!< AESDCNTL: Bit 6                                                                                                  */
116 
117 #define R_AES_AESDCNTL_FIST_SET                          (0x0004UL) /*!< AESDCNTL: FIRST = 1: The result of the previous calculation is not used for the calculation of the first block   */
118 #define R_AES_AESDCNTL_NEW_KEY_SET                       (0x0008UL) /*!< AESDCNTL: NEW_KEY = 1: Key data are updated using the data set in the AESKEYn registers                          */
119 #define R_AES_AESDCNTL_ATTR_CCM_MODE_1                   (0x0020UL) /*!< AESDCNTL: ATTR[2:0] = 001: The input data as the parameter B0 of the formatting function                         */
120 #define R_AES_AESDCNTL_ATTR_CCM_MODE_2                   (0x0040UL) /*!< AESDCNTL: ATTR[2:0] = 010: In encryption: Setting prohibited, In decryption: A ciphertext                        */
121 #define R_AES_AESDCNTL_ATTR_CCM_MODE_3                   (0x0060UL) /*!< AESDCNTL: ATTR[2:0] = 011: The input data as A (associated data) of the formatting function                      */
122 #define R_AES_AESDCNTL_ATTR_CCM_MODE_4                   (0x0080UL) /*!< AESDCNTL: ATTR[2:0] = 100: Indicating the input data are a plaintext                                             */
123 #define R_AES_AESDCNTL_ATTR_CCM_MODE_5                   (0x0000UL) /*!< AESDCNTL: ATTR[2:0] = 000: In encryption: The dummy input data used for calculation of T XOR MSBTlen(S0)
124                                                                      *                              In decryption: Setting prohibited                                                     */
125 #define R_AES_AESDCNTL_ATTR_CCM_MODE_6                   (0x00A0UL) /*!< AESDCNTL: ATTR[2:0] = 101: In encryption: Setting prohibited
126                                                                      *                              In decryption: The input data to be calculated by T XOR MSBTlen(S0)                   */
127 
128 #define R_AES_AESSTSL_BIT_5                              (0x0020UL) /*!< AESSTSL: Bit 5: Status Bit to show AES operation status                                                          */
129 #define R_AES_AESSTSL_CALCULATE_COMPLETED                (0x0003UL) /*!< AESSTSL: Bit 0-1: Status Bit to show AES Encryption/Decryption completion                                        */
130 #define R_AES_AESSTSCL_DATA_CLEAN                        (0x0003UL) /*!< AESSTSCL: Bit 0-1: clear bit1.0 state in AES Status Register                                                     */
131 
132 #define R_AES_AESDCNTH_EXECUTE_TAG_CALCULATION           (0x0002UL) /*!< AESDCNTH: Bit 1 = 1: The calculation of tag is executed, and result is stored in the AESODATn registers          */
133 #define R_AES_AESDCNTH_NOT_EXECUTE_TAG_CALCULATION       (0x0000UL) /*!< AESDCNTH: Bit 1 = 0: Don't execute calculation of tag                                                            */
134 
135 #define HW_AES_DATA_FIT_TO_BLOCK_SIZE(x)    ((uint32_t) x & 0xFFFFFFF0)
136 #define HW_AES_DATA_GET_LAST_REMAINS(x)     ((uint32_t) x & 0x0000000F)
137 #define HW_32BIT_ALIGNED(x)                 !(x & 0x03)
138 
139 /**********************************************************************************************************************
140  * Global Typedef definitions
141  *********************************************************************************************************************/
142 
143 /**********************************************************************************************************************
144  * External global variables
145  *********************************************************************************************************************/
146 
147 /**********************************************************************************************************************
148  * Exported global functions
149  *********************************************************************************************************************/
150 
151 /***********************************************************************************************************************
152  * Private global variables and functions
153  ***********************************************************************************************************************/
154 uint32_t  change_endian_long(uint32_t data);
155 void      hw_aes_set_key(uint8_t * key, uint32_t KeyLen);
156 void      hw_aes_set_iv(uint8_t * initialize_vetor);
157 void      hw_aes_start(uint8_t * input, uint8_t * output, uint32_t block);
158 void      hw_aes_ccm_mode_start(uint8_t * input, uint8_t * output, uint32_t block);
159 fsp_err_t hw_gcm_calculation(uint8_t * input,
160                              uint8_t * output,
161                              uint32_t  data_len,
162                              uint8_t * atag,
163                              uint8_t * initial_vector,
164                              uint32_t  iv_len,
165                              uint8_t * aad,
166                              uint32_t  aad_len);
167 
168 void HW_SCE_AesCcmDecryptCounterGenerate(uint32_t InData_TextLength,
169                                          uint32_t InData_Hdrlen,
170                                          uint32_t InData_MacLength,
171                                          uint32_t InData_IVLength);
172 
173 fsp_err_t HW_SCE_Aes128EncryptDecryptInitSub(const uint32_t * InData_KeyType,
174                                              const uint32_t * InData_Cmd,
175                                              const uint32_t * InData_KeyIndex,
176                                              const uint32_t * InData_IV);
177 
178 void HW_SCE_Aes128EncryptDecryptUpdateSub(const uint32_t * InData_Text,
179                                           uint32_t       * OutData_Text,
180                                           const uint32_t   MAX_CNT);
181 fsp_err_t HW_SCE_Aes128EncryptDecryptFinalSub(void);
182 
183 fsp_err_t HW_SCE_Aes192EncryptDecryptInitSub(const uint32_t * InData_Cmd,
184                                              const uint32_t * InData_KeyIndex,
185                                              const uint32_t * InData_IV);
186 void HW_SCE_Aes192EncryptDecryptUpdateSub(const uint32_t * InData_Text,
187                                           uint32_t       * OutData_Text,
188                                           const uint32_t   MAX_CNT);
189 fsp_err_t HW_SCE_Aes192EncryptDecryptFinalSub(void);
190 fsp_err_t HW_SCE_Aes256EncryptDecryptInitSub(const uint32_t * InData_KeyType,
191                                              const uint32_t * InData_Cmd,
192                                              const uint32_t * InData_KeyIndex,
193                                              const uint32_t * InData_IV);
194 void HW_SCE_Aes256EncryptDecryptUpdateSub(const uint32_t * InData_Text,
195                                           uint32_t       * OutData_Text,
196                                           const uint32_t   MAX_CNT);
197 fsp_err_t HW_SCE_Aes256EncryptDecryptFinalSub(void);
198 
199 fsp_err_t HW_SCE_Aes128GcmEncryptInitSub(uint32_t * InData_KeyType, uint32_t * InData_KeyIndex, uint32_t * InData_IV);
200 void      HW_SCE_Aes128GcmEncryptUpdateAADSub(uint32_t * InData_DataA, uint32_t MAX_CNT);
201 void      HW_SCE_Aes128GcmEncryptUpdateTransitionSub(void);
202 void      HW_SCE_Aes128GcmEncryptUpdateSub(uint32_t * InData_Text, uint32_t * OutData_Text, uint32_t MAX_CNT);
203 fsp_err_t HW_SCE_Aes128GcmEncryptFinalSub(uint32_t * InData_Text,
204                                           uint32_t * InData_DataALen,
205                                           uint32_t * InData_TextLen,
206                                           uint32_t * OutData_Text,
207                                           uint32_t * OutData_DataT);
208 fsp_err_t HW_SCE_Aes128GcmDecryptInitSub(uint32_t * InData_KeyType, uint32_t * InData_KeyIndex, uint32_t * InData_IV);
209 void      HW_SCE_Aes128GcmDecryptUpdateAADSub(uint32_t * InData_DataA, uint32_t MAX_CNT);
210 void      HW_SCE_Aes128GcmDecryptUpdateTransitionSub(void);
211 void      HW_SCE_Aes128GcmDecryptUpdateSub(uint32_t * InData_Text, uint32_t * OutData_Text, uint32_t MAX_CNT);
212 fsp_err_t HW_SCE_Aes128GcmDecryptFinalSub(uint32_t * InData_Text,
213                                           uint32_t * InData_DataT,
214                                           uint32_t * InData_DataALen,
215                                           uint32_t * InData_TextLen,
216                                           uint32_t * InData_DataTLen,
217                                           uint32_t * OutData_Text);
218 
219 fsp_err_t HW_SCE_Aes192GcmEncryptInitSub(uint32_t * InData_KeyType, uint32_t * InData_KeyIndex, uint32_t * InData_IV);
220 void      HW_SCE_Aes192GcmEncryptUpdateAADSub(uint32_t * InData_DataA, uint32_t MAX_CNT);
221 void      HW_SCE_Aes192GcmEncryptUpdateTransitionSub(void);
222 void      HW_SCE_Aes192GcmEncryptUpdateSub(uint32_t * InData_Text, uint32_t * OutData_Text, uint32_t MAX_CNT);
223 fsp_err_t HW_SCE_Aes192GcmEncryptFinalSub(uint32_t * InData_Text,
224                                           uint32_t * InData_DataALen,
225                                           uint32_t * InData_TextLen,
226                                           uint32_t * OutData_Text,
227                                           uint32_t * OutData_DataT);
228 fsp_err_t HW_SCE_Aes192GcmDecryptInitSub(uint32_t * InData_KeyType, uint32_t * InData_KeyIndex, uint32_t * InData_IV);
229 void      HW_SCE_Aes192GcmDecryptUpdateAADSub(uint32_t * InData_DataA, uint32_t MAX_CNT);
230 void      HW_SCE_Aes192GcmDecryptUpdateTransitionSub(void);
231 void      HW_SCE_Aes192GcmDecryptUpdateSub(uint32_t * InData_Text, uint32_t * OutData_Text, uint32_t MAX_CNT);
232 fsp_err_t HW_SCE_Aes192GcmDecryptFinalSub(uint32_t * InData_Text,
233                                           uint32_t * InData_DataT,
234                                           uint32_t * InData_DataALen,
235                                           uint32_t * InData_TextLen,
236                                           uint32_t * InData_DataTLen,
237                                           uint32_t * OutData_Text);
238 
239 fsp_err_t HW_SCE_Aes256GcmEncryptInitSub(uint32_t * InData_KeyType, uint32_t * InData_KeyIndex, uint32_t * InData_IV);
240 void      HW_SCE_Aes256GcmEncryptUpdateAADSub(uint32_t * InData_DataA, uint32_t MAX_CNT);
241 void      HW_SCE_Aes256GcmEncryptUpdateTransitionSub(void);
242 void      HW_SCE_Aes256GcmEncryptUpdateSub(uint32_t * InData_Text, uint32_t * OutData_Text, uint32_t MAX_CNT);
243 fsp_err_t HW_SCE_Aes256GcmEncryptFinalSub(uint32_t * InData_Text,
244                                           uint32_t * InData_DataALen,
245                                           uint32_t * InData_TextLen,
246                                           uint32_t * OutData_Text,
247                                           uint32_t * OutData_DataT);
248 fsp_err_t HW_SCE_Aes256GcmDecryptInitSub(uint32_t * InData_KeyType, uint32_t * InData_KeyIndex, uint32_t * InData_IV);
249 void      HW_SCE_Aes256GcmDecryptUpdateAADSub(uint32_t * InData_DataA, uint32_t MAX_CNT);
250 void      HW_SCE_Aes256GcmDecryptUpdateTransitionSub(void);
251 void      HW_SCE_Aes256GcmDecryptUpdateSub(uint32_t * InData_Text, uint32_t * OutData_Text, uint32_t MAX_CNT);
252 fsp_err_t HW_SCE_Aes256GcmDecryptFinalSub(uint32_t * InData_Text,
253                                           uint32_t * InData_DataT,
254                                           uint32_t * InData_DataALen,
255                                           uint32_t * InData_TextLen,
256                                           uint32_t * InData_DataTLen,
257                                           uint32_t * OutData_Text);
258 fsp_err_t HW_SCE_AES_128CtrEncrypt(const uint32_t * InData_Key,
259                                    const uint32_t * InData_IV,
260                                    const uint32_t   num_words,
261                                    const uint32_t * InData_Text,
262                                    uint32_t       * OutData_Text,
263                                    uint32_t       * OutData_IV);
264 fsp_err_t HW_SCE_AES_192CtrEncrypt(const uint32_t * InData_Key,
265                                    const uint32_t * InData_IV,
266                                    const uint32_t   num_words,
267                                    const uint32_t * InData_Text,
268                                    uint32_t       * OutData_Text,
269                                    uint32_t       * OutData_IV);
270 fsp_err_t HW_SCE_AES_256CtrEncrypt(const uint32_t * InData_Key,
271                                    const uint32_t * InData_IV,
272                                    const uint32_t   num_words,
273                                    const uint32_t * InData_Text,
274                                    uint32_t       * OutData_Text,
275                                    uint32_t       * OutData_IV);
276 fsp_err_t HW_SCE_AES_128CtrDecrypt(const uint32_t * InData_Key,
277                                    const uint32_t * InData_IV,
278                                    const uint32_t   num_words,
279                                    const uint32_t * InData_Text,
280                                    uint32_t       * OutData_Text);
281 fsp_err_t HW_SCE_AES_192CtrDecrypt(const uint32_t * InData_Key,
282                                    const uint32_t * InData_IV,
283                                    const uint32_t   num_words,
284                                    const uint32_t * InData_Text,
285                                    uint32_t       * OutData_Text);
286 fsp_err_t HW_SCE_AES_256CtrDecrypt(const uint32_t * InData_Key,
287                                    const uint32_t * InData_IV,
288                                    const uint32_t   num_words,
289                                    const uint32_t * InData_Text,
290                                    uint32_t       * OutData_Text);
291 
292 fsp_err_t HW_SCE_Aes128CcmEncryptInitSub(const uint32_t InData_KeyType[],
293                                          const uint32_t InData_DataType[],
294                                          const uint32_t InData_Cmd[],
295                                          const uint32_t InData_TextLen[],
296                                          const uint32_t InData_KeyIndex[],
297                                          const uint32_t InData_IV[],
298                                          const uint32_t InData_Header[],
299                                          const uint32_t InData_SeqNum[],
300                                          const uint32_t Header_Len);
301 
302 fsp_err_t HW_SCE_Aes192CcmEncryptInitSub(const uint32_t InData_KeyType[],
303                                          const uint32_t InData_DataType[],
304                                          const uint32_t InData_Cmd[],
305                                          const uint32_t InData_TextLen[],
306                                          const uint32_t InData_KeyIndex[],
307                                          const uint32_t InData_IV[],
308                                          const uint32_t InData_Header[],
309                                          const uint32_t InData_SeqNum[],
310                                          const uint32_t Header_Len);
311 
312 fsp_err_t HW_SCE_Aes256CcmEncryptInitSub(const uint32_t InData_KeyType[],
313                                          const uint32_t InData_DataType[],
314                                          const uint32_t InData_Cmd[],
315                                          const uint32_t InData_TextLen[],
316                                          const uint32_t InData_KeyIndex[],
317                                          const uint32_t InData_IV[],
318                                          const uint32_t InData_Header[],
319                                          const uint32_t InData_SeqNum[],
320                                          const uint32_t Header_Len);
321 
322 void HW_SCE_Aes128CcmEncryptUpdateSub(const uint32_t InData_Text[], uint32_t OutData_Text[], const uint32_t MAX_CNT);
323 
324 void HW_SCE_Aes192CcmEncryptUpdateSub(const uint32_t InData_Text[], uint32_t OutData_Text[], const uint32_t MAX_CNT);
325 
326 void HW_SCE_Aes256CcmEncryptUpdateSub(const uint32_t InData_Text[], uint32_t OutData_Text[], const uint32_t MAX_CNT);
327 
328 fsp_err_t HW_SCE_Aes128CcmEncryptFinalSub(const uint32_t InData_Text[], uint32_t OutData_Text[],
329                                           uint32_t OutData_MAC[]);
330 
331 fsp_err_t HW_SCE_Aes192CcmEncryptFinalSub(const uint32_t InData_Text[], uint32_t OutData_Text[],
332                                           uint32_t OutData_MAC[]);
333 
334 fsp_err_t HW_SCE_Aes256CcmEncryptFinalSub(const uint32_t InData_Text[], uint32_t OutData_Text[],
335                                           uint32_t OutData_MAC[]);
336 
337 fsp_err_t HW_SCE_Aes128CcmDecryptInitSub(const uint32_t InData_KeyType[],
338                                          const uint32_t InData_DataType[],
339                                          const uint32_t InData_Cmd[],
340                                          const uint32_t InData_TextLen[],
341                                          const uint32_t InData_MACLength[],
342                                          const uint32_t InData_KeyIndex[],
343                                          const uint32_t InData_IV[],
344                                          const uint32_t InData_Header[],
345                                          const uint32_t InData_SeqNum[],
346                                          const uint32_t Header_Len);
347 
348 fsp_err_t HW_SCE_Aes192CcmDecryptInitSub(const uint32_t InData_KeyType[],
349                                          const uint32_t InData_DataType[],
350                                          const uint32_t InData_Cmd[],
351                                          const uint32_t InData_TextLen[],
352                                          const uint32_t InData_MACLength[],
353                                          const uint32_t InData_KeyIndex[],
354                                          const uint32_t InData_IV[],
355                                          const uint32_t InData_Header[],
356                                          const uint32_t InData_SeqNum[],
357                                          const uint32_t Header_Len);
358 
359 fsp_err_t HW_SCE_Aes256CcmDecryptInitSub(const uint32_t InData_KeyType[],
360                                          const uint32_t InData_DataType[],
361                                          const uint32_t InData_Cmd[],
362                                          const uint32_t InData_TextLen[],
363                                          const uint32_t InData_MACLength[],
364                                          const uint32_t InData_KeyIndex[],
365                                          const uint32_t InData_IV[],
366                                          const uint32_t InData_Header[],
367                                          const uint32_t InData_SeqNum[],
368                                          const uint32_t Header_Len);
369 
370 void HW_SCE_Aes128CcmDecryptUpdateSub(const uint32_t InData_Text[], uint32_t OutData_Text[], const uint32_t MAX_CNT);
371 
372 void HW_SCE_Aes192CcmDecryptUpdateSub(const uint32_t InData_Text[], uint32_t OutData_Text[], const uint32_t MAX_CNT);
373 
374 void HW_SCE_Aes256CcmDecryptUpdateSub(const uint32_t InData_Text[], uint32_t OutData_Text[], const uint32_t MAX_CNT);
375 
376 fsp_err_t HW_SCE_Aes128CcmDecryptFinalSub(const uint32_t InData_Text[],
377                                           const uint32_t InData_TextLen[],
378                                           const uint32_t InData_MAC[],
379                                           const uint32_t InData_MACLength[],
380                                           uint32_t       OutData_Text[]);
381 
382 fsp_err_t HW_SCE_Aes192CcmDecryptFinalSub(const uint32_t InData_Text[],
383                                           const uint32_t InData_TextLen[],
384                                           const uint32_t InData_MAC[],
385                                           const uint32_t InData_MACLength[],
386                                           uint32_t       OutData_Text[]);
387 
388 fsp_err_t HW_SCE_Aes256CcmDecryptFinalSub(const uint32_t InData_Text[],
389                                           const uint32_t InData_TextLen[],
390                                           const uint32_t InData_MAC[],
391                                           const uint32_t InData_MACLength[],
392                                           uint32_t       OutData_Text[]);
393 
394 #endif                                 /* HW_SCE_RA_PRIVATE_HEADER_FILE */
395