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);
uint8_t aes_auth_crypt_get_result(void *iv, void *tag)
Gets the result of the AES authentication/crypto operation.
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_load_keys(const void *keys, uint8_t key_size, uint8_t count, uint8_t start_area)
Writes keys into the Key RAM.
static volatile clock_time_t count
These routines define the AVR-specific calls declared in /core/sys/clock.h CLOCK_SECOND is the number...
Header file for the cc2538 AES/SHA cryptoprocessor driver.