60#define AES_DMAC_CH0_CTRL 0x4008B000
61#define AES_DMAC_CH0_EXTADDR 0x4008B004
62#define AES_DMAC_CH0_DMALENGTH 0x4008B00C
63#define AES_DMAC_STATUS 0x4008B018
64#define AES_DMAC_SWRES 0x4008B01C
65#define AES_DMAC_CH1_CTRL 0x4008B020
66#define AES_DMAC_CH1_EXTADDR 0x4008B024
67#define AES_DMAC_CH1_DMALENGTH 0x4008B02C
68#define AES_DMAC_MST_RUNPARAMS 0x4008B078
69#define AES_DMAC_PERSR 0x4008B07C
70#define AES_DMAC_OPTIONS 0x4008B0F8
71#define AES_DMAC_VERSION 0x4008B0FC
72#define AES_KEY_STORE_WRITE_AREA \
74#define AES_KEY_STORE_WRITTEN_AREA \
76#define AES_KEY_STORE_SIZE 0x4008B408
77#define AES_KEY_STORE_READ_AREA 0x4008B40C
78#define AES_AES_KEY2_0 0x4008B500
79#define AES_AES_KEY2_1 0x4008B504
80#define AES_AES_KEY2_2 0x4008B508
81#define AES_AES_KEY2_3 0x4008B50C
82#define AES_AES_KEY3_0 0x4008B510
83#define AES_AES_KEY3_1 0x4008B514
84#define AES_AES_KEY3_2 0x4008B518
85#define AES_AES_KEY3_3 0x4008B51C
86#define AES_AES_IV_0 0x4008B540
87#define AES_AES_IV_1 0x4008B544
88#define AES_AES_IV_2 0x4008B548
89#define AES_AES_IV_3 0x4008B54C
90#define AES_AES_CTRL 0x4008B550
91#define AES_AES_C_LENGTH_0 0x4008B554
92#define AES_AES_C_LENGTH_1 0x4008B558
93#define AES_AES_AUTH_LENGTH 0x4008B55C
94#define AES_AES_DATA_IN_OUT_0 0x4008B560
95#define AES_AES_DATA_IN_OUT_1 0x4008B564
96#define AES_AES_DATA_IN_OUT_2 0x4008B568
97#define AES_AES_DATA_IN_OUT_3 0x4008B56C
98#define AES_AES_TAG_OUT_0 0x4008B570
99#define AES_AES_TAG_OUT_1 0x4008B574
100#define AES_AES_TAG_OUT_2 0x4008B578
101#define AES_AES_TAG_OUT_3 0x4008B57C
102#define AES_HASH_DATA_IN_0 0x4008B600
103#define AES_HASH_DATA_IN_1 0x4008B604
104#define AES_HASH_DATA_IN_2 0x4008B608
105#define AES_HASH_DATA_IN_3 0x4008B60C
106#define AES_HASH_DATA_IN_4 0x4008B610
107#define AES_HASH_DATA_IN_5 0x4008B614
108#define AES_HASH_DATA_IN_6 0x4008B618
109#define AES_HASH_DATA_IN_7 0x4008B61C
110#define AES_HASH_DATA_IN_8 0x4008B620
111#define AES_HASH_DATA_IN_9 0x4008B624
112#define AES_HASH_DATA_IN_10 0x4008B628
113#define AES_HASH_DATA_IN_11 0x4008B62C
114#define AES_HASH_DATA_IN_12 0x4008B630
115#define AES_HASH_DATA_IN_13 0x4008B634
116#define AES_HASH_DATA_IN_14 0x4008B638
117#define AES_HASH_DATA_IN_15 0x4008B63C
118#define AES_HASH_IO_BUF_CTRL 0x4008B640
119#define AES_HASH_MODE_IN 0x4008B644
120#define AES_HASH_LENGTH_IN_L 0x4008B648
121#define AES_HASH_LENGTH_IN_H 0x4008B64C
122#define AES_HASH_DIGEST_A 0x4008B650
123#define AES_HASH_DIGEST_B 0x4008B654
124#define AES_HASH_DIGEST_C 0x4008B658
125#define AES_HASH_DIGEST_D 0x4008B65C
126#define AES_HASH_DIGEST_E 0x4008B660
127#define AES_HASH_DIGEST_F 0x4008B664
128#define AES_HASH_DIGEST_G 0x4008B668
129#define AES_HASH_DIGEST_H 0x4008B66C
130#define AES_CTRL_ALG_SEL 0x4008B700
131#define AES_CTRL_PROT_EN 0x4008B704
132#define AES_CTRL_SW_RESET 0x4008B740
133#define AES_CTRL_INT_CFG 0x4008B780
134#define AES_CTRL_INT_EN 0x4008B784
135#define AES_CTRL_INT_CLR 0x4008B788
136#define AES_CTRL_INT_SET 0x4008B78C
137#define AES_CTRL_INT_STAT 0x4008B790
138#define AES_CTRL_OPTIONS 0x4008B7F8
139#define AES_CTRL_VERSION 0x4008B7FC
145#define AES_DMAC_CH_CTRL_PRIO 0x00000002
146#define AES_DMAC_CH_CTRL_EN 0x00000001
152#define AES_DMAC_CH_DMALENGTH_DMALEN_M \
154#define AES_DMAC_CH_DMALENGTH_DMALEN_S 0
160#define AES_DMAC_STATUS_PORT_ERR \
162#define AES_DMAC_STATUS_CH1_ACT 0x00000002
163#define AES_DMAC_STATUS_CH0_ACT 0x00000001
169#define AES_DMAC_SWRES_SWRES 0x00000001
175#define AES_DMAC_MST_RUNPARAMS_AHB_MST1_BURST_SIZE_4 \
177#define AES_DMAC_MST_RUNPARAMS_AHB_MST1_BURST_SIZE_8 \
179#define AES_DMAC_MST_RUNPARAMS_AHB_MST1_BURST_SIZE_16 \
181#define AES_DMAC_MST_RUNPARAMS_AHB_MST1_BURST_SIZE_32 \
183#define AES_DMAC_MST_RUNPARAMS_AHB_MST1_BURST_SIZE_64 \
185#define AES_DMAC_MST_RUNPARAMS_AHB_MST1_BURST_SIZE_M \
187#define AES_DMAC_MST_RUNPARAMS_AHB_MST1_BURST_SIZE_S \
189#define AES_DMAC_MST_RUNPARAMS_AHB_MST1_IDLE_EN \
191#define AES_DMAC_MST_RUNPARAMS_AHB_MST1_INCR_EN \
193#define AES_DMAC_MST_RUNPARAMS_AHB_MST1_LOCK_EN \
195#define AES_DMAC_MST_RUNPARAMS_AHB_MST1_BIGEND \
202#define AES_DMAC_PERSR_PORT1_AHB_ERROR \
204#define AES_DMAC_PERSR_PORT1_CHANNEL \
211#define AES_DMAC_OPTIONS_NR_OF_CHANNELS_M \
213#define AES_DMAC_OPTIONS_NR_OF_CHANNELS_S \
215#define AES_DMAC_OPTIONS_NR_OF_PORTS_M \
217#define AES_DMAC_OPTIONS_NR_OF_PORTS_S 0
223#define AES_DMAC_VERSION_HW_MAJOR_VERSION_M \
225#define AES_DMAC_VERSION_HW_MAJOR_VERSION_S \
227#define AES_DMAC_VERSION_HW_MINOR_VERSION_M \
229#define AES_DMAC_VERSION_HW_MINOR_VERSION_S \
231#define AES_DMAC_VERSION_HW_PATCH_LEVEL_M \
233#define AES_DMAC_VERSION_HW_PATCH_LEVEL_S \
235#define AES_DMAC_VERSION_EIP_NUMBER_COMPL_M \
237#define AES_DMAC_VERSION_EIP_NUMBER_COMPL_S \
239#define AES_DMAC_VERSION_EIP_NUMBER_M \
241#define AES_DMAC_VERSION_EIP_NUMBER_S 0
247#define AES_KEY_STORE_SIZE_KEY_SIZE_128 1
248#define AES_KEY_STORE_SIZE_KEY_SIZE_192 2
249#define AES_KEY_STORE_SIZE_KEY_SIZE_256 3
250#define AES_KEY_STORE_SIZE_KEY_SIZE_M \
252#define AES_KEY_STORE_SIZE_KEY_SIZE_S 0
258#define AES_KEY_STORE_READ_AREA_BUSY \
260#define AES_KEY_STORE_READ_AREA_RAM_AREA_M \
262#define AES_KEY_STORE_READ_AREA_RAM_AREA_S \
269#define AES_AES_CTRL_CONTEXT_READY \
271#define AES_AES_CTRL_SAVED_CONTEXT_READY \
273#define AES_AES_CTRL_SAVE_CONTEXT \
275#define AES_AES_CTRL_CCM_M_M 0x01C00000
276#define AES_AES_CTRL_CCM_M_S 22
277#define AES_AES_CTRL_CCM_L_M 0x00380000
278#define AES_AES_CTRL_CCM_L_S 19
279#define AES_AES_CTRL_CCM 0x00040000
280#define AES_AES_CTRL_GCM 0x00030000
281#define AES_AES_CTRL_CBC_MAC 0x00008000
282#define AES_AES_CTRL_CTR_WIDTH_32 (0 << 7)
283#define AES_AES_CTRL_CTR_WIDTH_64 (1 << 7)
284#define AES_AES_CTRL_CTR_WIDTH_96 (2 << 7)
285#define AES_AES_CTRL_CTR_WIDTH_128 \
287#define AES_AES_CTRL_CTR_WIDTH_M \
289#define AES_AES_CTRL_CTR_WIDTH_S 7
290#define AES_AES_CTRL_CTR 0x00000040
291#define AES_AES_CTRL_CBC 0x00000020
292#define AES_AES_CTRL_KEY_SIZE_128 (1 << 3)
293#define AES_AES_CTRL_KEY_SIZE_192 (2 << 3)
294#define AES_AES_CTRL_KEY_SIZE_256 (3 << 3)
295#define AES_AES_CTRL_KEY_SIZE_M 0x00000018
296#define AES_AES_CTRL_KEY_SIZE_S 3
297#define AES_AES_CTRL_DIRECTION_ENCRYPT \
299#define AES_AES_CTRL_INPUT_READY \
301#define AES_AES_CTRL_OUTPUT_READY \
308#define AES_AES_C_LENGTH_1_C_LENGTH_M \
310#define AES_AES_C_LENGTH_1_C_LENGTH_S 0
316#define AES_HASH_IO_BUF_CTRL_PAD_DMA_MESSAGE \
318#define AES_HASH_IO_BUF_CTRL_GET_DIGEST \
320#define AES_HASH_IO_BUF_CTRL_PAD_MESSAGE \
322#define AES_HASH_IO_BUF_CTRL_RFD_IN \
324#define AES_HASH_IO_BUF_CTRL_DATA_IN_AV \
326#define AES_HASH_IO_BUF_CTRL_OUTPUT_FULL \
333#define AES_HASH_MODE_IN_SHA256_MODE \
335#define AES_HASH_MODE_IN_NEW_HASH \
342#define AES_CTRL_ALG_SEL_TAG 0x80000000
343#define AES_CTRL_ALG_SEL_HASH 0x00000004
344#define AES_CTRL_ALG_SEL_AES 0x00000002
345#define AES_CTRL_ALG_SEL_KEYSTORE \
352#define AES_CTRL_PROT_EN_PROT_EN \
359#define AES_CTRL_SW_RESET_SW_RESET \
366#define AES_CTRL_INT_CFG_LEVEL 0x00000001
372#define AES_CTRL_INT_EN_DMA_IN_DONE \
374#define AES_CTRL_INT_EN_RESULT_AV \
381#define AES_CTRL_INT_CLR_DMA_BUS_ERR \
383#define AES_CTRL_INT_CLR_KEY_ST_WR_ERR \
385#define AES_CTRL_INT_CLR_KEY_ST_RD_ERR \
387#define AES_CTRL_INT_CLR_DMA_IN_DONE \
389#define AES_CTRL_INT_CLR_RESULT_AV \
396#define AES_CTRL_INT_SET_DMA_IN_DONE \
398#define AES_CTRL_INT_SET_RESULT_AV \
405#define AES_CTRL_INT_STAT_DMA_BUS_ERR \
407#define AES_CTRL_INT_STAT_KEY_ST_WR_ERR \
409#define AES_CTRL_INT_STAT_KEY_ST_RD_ERR \
411#define AES_CTRL_INT_STAT_DMA_IN_DONE \
413#define AES_CTRL_INT_STAT_RESULT_AV \
420#define AES_CTRL_OPTIONS_TYPE_M 0xFF000000
421#define AES_CTRL_OPTIONS_TYPE_S 24
422#define AES_CTRL_OPTIONS_AHBINTERFACE \
424#define AES_CTRL_OPTIONS_SHA_256 \
426#define AES_CTRL_OPTIONS_AES_CCM \
428#define AES_CTRL_OPTIONS_AES_GCM \
430#define AES_CTRL_OPTIONS_AES_256 \
432#define AES_CTRL_OPTIONS_AES_128 \
434#define AES_CTRL_OPTIONS_HASH 0x00000004
435#define AES_CTRL_OPTIONS_AES 0x00000002
436#define AES_CTRL_OPTIONS_KEYSTORE \
443#define AES_CTRL_VERSION_MAJOR_VERSION_M \
445#define AES_CTRL_VERSION_MAJOR_VERSION_S \
447#define AES_CTRL_VERSION_MINOR_VERSION_M \
449#define AES_CTRL_VERSION_MINOR_VERSION_S \
451#define AES_CTRL_VERSION_PATCH_LEVEL_M \
453#define AES_CTRL_VERSION_PATCH_LEVEL_S 16
454#define AES_CTRL_VERSION_EIP_NUMBER_COMPL_M \
456#define AES_CTRL_VERSION_EIP_NUMBER_COMPL_S \
458#define AES_CTRL_VERSION_EIP_NUMBER_M \
460#define AES_CTRL_VERSION_EIP_NUMBER_S 0
466#define AES_KEYSTORE_READ_ERROR 5
467#define AES_KEYSTORE_WRITE_ERROR 6
468#define AES_AUTHENTICATION_FAILED 7
474#define AES_KEY_AREAS 8
475#define AES_BLOCK_LEN (128 / 8)
476#define AES_IV_LEN AES_BLOCK_LEN
477#define AES_TAG_LEN AES_BLOCK_LEN
517 const void *adata, uint16_t adata_len,
518 const void *data_in,
void *data_out,
519 uint16_t data_len,
struct process *process);
Header file for the cc2538 AES/SHA cryptoprocessor driver.
uint8_t aes_load_keys(const void *keys, uint8_t key_size, uint8_t count, uint8_t start_area)
Writes keys into the Key RAM.
uint8_t aes_auth_crypt_check_status(void)
Checks the status of the AES authentication/crypto operation.
uint8_t aes_auth_crypt_start(uint32_t ctrl, uint8_t key_area, const void *iv, const void *adata, uint16_t adata_len, const void *data_in, void *data_out, uint16_t data_len, struct process *process)
Starts an AES authentication/crypto operation.
uint8_t aes_auth_crypt_get_result(void *iv, void *tag)
Gets the result of the AES authentication/crypto operation.
static volatile uint64_t count
Num.