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 497 uint8_t
aes_load_keys(
const void *keys, uint8_t key_size, uint8_t count,
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.
Header file for the cc2538 AES/SHA cryptoprocessor driver.
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_check_status(void)
Checks the status of the 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.