Lines Matching refs:base

792 static status_t cau3_initialize_inst_memory(CAU3_Type *base, const uint32_t *cau3ImemImage, size_t …
793 static status_t cau3_initialize_data_memory(CAU3_Type *base, cau3_task_done_t taskDone);
794 static status_t cau3_initialize_read_only_data_memory(CAU3_Type *base,
798 static status_t cau3_load_key_context(CAU3_Type *base,
803 … CAU3_Type *base, const uint8_t *key, size_t keySize, uint32_t keySlot, cau3_task_done_t taskDone);
804 static status_t cau3_pkha_clear_regabne(CAU3_Type *base, bool A, bool B, bool N, bool E);
807 static status_t cau3_execute_null_task(CAU3_Type *base, cau3_task_done_t taskDone);
808 static status_t cau3_lock_semaphore(CAU3_Type *base);
809 static void cau3_release_semaphore(CAU3_Type *base);
816 static status_t cau3_process_task_completion(CAU3_Type *base, cau3_task_done_t taskDone) in cau3_process_task_completion() argument
826 tkcs = base->SR & CAU3_SR_TKCS_MASK; in cau3_process_task_completion()
829 tkcs = base->SR & CAU3_SR_TKCS_MASK; in cau3_process_task_completion()
844 tkcs = base->SR & CAU3_SR_TKCS_MASK; in cau3_process_task_completion()
884 static status_t cau3_initialize_inst_memory(CAU3_Type *base, const uint32_t *cau3ImemImage, size_t … in cau3_initialize_inst_memory() argument
889 base->CR = 0U; in cau3_initialize_inst_memory()
892 while ((base->SR & CAU3_SR_TKCS_MASK) == CAU3_SR_TKCS_INITRUN) in cau3_initialize_inst_memory()
897 if ((base->SR & CAU3_SR_TKCS_MASK) != CAU3_SR_TKCS_STOPNOERR) in cau3_initialize_inst_memory()
899 … return (int32_t)(uint32_t)(0xbad00000U + (base->SR & CAU3_SR_TKCS_MASK)); /* exit with error */ in cau3_initialize_inst_memory()
902 base->SR = CAU3_SR_TCIRQ_MASK; /* clear the TCIRQ interrupt flag */ in cau3_initialize_inst_memory()
906 base->DBGMCMD = 0xac000000U; /* wt=1, ia=1, imem=0 */ in cau3_initialize_inst_memory()
907 base->DBGMADR = 0U; /* imem starting address */ in cau3_initialize_inst_memory()
910 base->DBGMDR = cau3ImemImage[i]; /* indirect write into cau3Imem */ in cau3_initialize_inst_memory()
915 base->DBGMCMD = 0x8c000000U; /* wt=0, ia=1, imem=0 */ in cau3_initialize_inst_memory()
916 base->DBGMADR = 0U; /* imem starting address */ in cau3_initialize_inst_memory()
919 if (base->DBGMDR != cau3ImemImage[i]) /* indirect read from cau3Imem */ in cau3_initialize_inst_memory()
943 static status_t cau3_initialize_data_memory(CAU3_Type *base, cau3_task_done_t taskDone) in cau3_initialize_data_memory() argument
948 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in cau3_initialize_data_memory()
949 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in cau3_initialize_data_memory()
950 base->CC_PC = CAU3_TASK_SECV_INIT; /* call cau_secv_init() */ in cau3_initialize_data_memory()
951 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in cau3_initialize_data_memory()
954 completionStatus = cau3_process_task_completion(base, taskDone); in cau3_initialize_data_memory()
973 static status_t cau3_initialize_read_only_data_memory(CAU3_Type *base, in cau3_initialize_read_only_data_memory() argument
981 base->CC_R[16] = (uint32_t)s_cau3ReadOnlyConstants; /* pReadOnlyConstants */ in cau3_initialize_read_only_data_memory()
982 base->CC_R[17] = s_cau3ReadOnlyConstantsBytes; /* byte count (0-mod-16) */ in cau3_initialize_read_only_data_memory()
983 base->CC_R[18] = CAU3_DMEM_AES_RCON; /* pDMEM_AES_RCON constants base */ in cau3_initialize_read_only_data_memory()
984 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in cau3_initialize_read_only_data_memory()
985 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in cau3_initialize_read_only_data_memory()
986 base->CC_PC = CAU3_TASK_BLKLD_DMEM; /* call cau_block_load_dmem task */ in cau3_initialize_read_only_data_memory()
987 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in cau3_initialize_read_only_data_memory()
990 completionStatus = cau3_process_task_completion(base, taskDone); in cau3_initialize_read_only_data_memory()
1009 status_t CAU3_MakeMemsPrivate(CAU3_Type *base, cau3_task_done_t taskDone) in CAU3_MakeMemsPrivate() argument
1013 completionStatus = cau3_lock_semaphore(base); in CAU3_MakeMemsPrivate()
1016 cau3_release_semaphore(base); in CAU3_MakeMemsPrivate()
1022 base->DBGCSR = CAU3_DBGCSR_DDBGMC_MASK; /* set DBGCSR[DDBGMC] */ in CAU3_MakeMemsPrivate()
1025 cau3_release_semaphore(base); in CAU3_MakeMemsPrivate()
1043 static status_t cau3_execute_null_task(CAU3_Type *base, cau3_task_done_t taskDone) in cau3_execute_null_task() argument
1048 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in cau3_execute_null_task()
1049 base->CC_R31 = 0; /* set LR = 0 to signal a host task */ in cau3_execute_null_task()
1050 base->CC_PC = CAU3_TASK_NULL; /* call cau_null() */ in cau3_execute_null_task()
1051 base->CC_CMD = taskDone; /* trigger cau3 execution */ in cau3_execute_null_task()
1054 completionStatus = cau3_process_task_completion(base, taskDone); in cau3_execute_null_task()
1074 … CAU3_Type *base, const uint8_t *key, size_t keySize, uint32_t keySlot, cau3_task_done_t taskDone) in cau3_load_key() argument
1079 completionStatus = cau3_lock_semaphore(base); in cau3_load_key()
1082 cau3_release_semaphore(base); in cau3_load_key()
1088 base->CC_R[16] = (uintptr_t)key; /* pKey */ in cau3_load_key()
1089 base->CC_R[17] = keySize; /* IV size */ in cau3_load_key()
1090 base->CC_R[18] = keySlot; /* keySlot */ in cau3_load_key()
1091 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in cau3_load_key()
1092 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in cau3_load_key()
1093 base->CC_PC = CAU3_TASK_LD_KEY; /* call cau_load_key() */ in cau3_load_key()
1094 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in cau3_load_key()
1097 completionStatus = cau3_process_task_completion(base, taskDone); in cau3_load_key()
1099 cau3_release_semaphore(base); in cau3_load_key()
1116 status_t CAU3_AES_Encrypt(CAU3_Type *base, cau3_handle_t *handle, const uint8_t plaintext[16], uint… in CAU3_AES_Encrypt() argument
1124 completionStatus = cau3_lock_semaphore(base); in CAU3_AES_Encrypt()
1127 cau3_release_semaphore(base); in CAU3_AES_Encrypt()
1133 base->CC_R[16] = (uint32_t)plaintext; /* pPlainText */ in CAU3_AES_Encrypt()
1134 base->CC_R[17] = (uint32_t)handle->keySlot; /* keySlot */ in CAU3_AES_Encrypt()
1135 base->CC_R[19] = (uint32_t)ciphertext; /* pCipherText */ in CAU3_AES_Encrypt()
1136 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_AES_Encrypt()
1137 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_AES_Encrypt()
1138 base->CC_PC = CAU3_TASK_AES_ENCRYPT; /* call cau_aes_encrypt() */ in CAU3_AES_Encrypt()
1139 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in CAU3_AES_Encrypt()
1142 completionStatus = cau3_process_task_completion(base, taskDone); in CAU3_AES_Encrypt()
1144 cau3_release_semaphore(base); in CAU3_AES_Encrypt()
1161 status_t CAU3_AES_Decrypt(CAU3_Type *base, cau3_handle_t *handle, const uint8_t ciphertext[16], uin… in CAU3_AES_Decrypt() argument
1169 completionStatus = cau3_lock_semaphore(base); in CAU3_AES_Decrypt()
1172 cau3_release_semaphore(base); in CAU3_AES_Decrypt()
1178 base->CC_R[16] = (uint32_t)ciphertext; /* pCipherText */ in CAU3_AES_Decrypt()
1179 base->CC_R[17] = (uint32_t)handle->keySlot; /* keySlot */ in CAU3_AES_Decrypt()
1180 base->CC_R[19] = (uint32_t)plaintext; /* pPlainText */ in CAU3_AES_Decrypt()
1181 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_AES_Decrypt()
1182 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_AES_Decrypt()
1183 base->CC_PC = CAU3_TASK_AES_DECRYPT; /* call cau_aes_decrypt() */ in CAU3_AES_Decrypt()
1184 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in CAU3_AES_Decrypt()
1187 completionStatus = cau3_process_task_completion(base, taskDone); in CAU3_AES_Decrypt()
1189 cau3_release_semaphore(base); in CAU3_AES_Decrypt()
1201 void CAU3_Init(CAU3_Type *base) in CAU3_Init() argument
1211 base->CR = CAU3_CR_RSTSM4(1); in CAU3_Init()
1212 base->CR = CAU3_CR_RSTSM4(2); in CAU3_Init()
1213 (void)cau3_initialize_inst_memory(base, s_cau3ImemImage, s_cau3ImemBytes); in CAU3_Init()
1214 (void)cau3_initialize_data_memory(base, kCAU3_TaskDonePoll); in CAU3_Init()
1215 …(void)cau3_initialize_read_only_data_memory(base, s_cau3ReadOnlyConstants, s_cau3ReadOnlyConstants… in CAU3_Init()
1220 static status_t cau3_lock_semaphore(CAU3_Type *base) in cau3_lock_semaphore() argument
1243 return cau3_execute_null_task(base, kCAU3_TaskDonePoll); in cau3_lock_semaphore()
1248 static void cau3_release_semaphore(CAU3_Type *base) in cau3_release_semaphore() argument
1275 static status_t cau3_load_key_context(CAU3_Type *base, in cau3_load_key_context() argument
1283 completionStatus = cau3_lock_semaphore(base); in cau3_load_key_context()
1286 cau3_release_semaphore(base); in cau3_load_key_context()
1292 base->CC_R[16] = (uint32_t)cauKeyContext; /* pKeyContext */ in cau3_load_key_context()
1293 base->CC_R[17] = (uint32_t)keySlot; /* keySlot */ in cau3_load_key_context()
1294 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in cau3_load_key_context()
1295 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in cau3_load_key_context()
1296 base->CC_PC = CAU3_TASK_LD_KEYCTX; /* call cau_load_key_context() */ in cau3_load_key_context()
1297 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in cau3_load_key_context()
1300 completionStatus = cau3_process_task_completion(base, taskDone); in cau3_load_key_context()
1302 cau3_release_semaphore(base); in cau3_load_key_context()
1318 status_t CAU3_ForceError(CAU3_Type *base, cau3_task_done_t taskDone) in CAU3_ForceError() argument
1323 completionStatus = cau3_lock_semaphore(base); in CAU3_ForceError()
1326 cau3_release_semaphore(base); in CAU3_ForceError()
1332 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_ForceError()
1333 base->CC_R31 = 0; /* set LR = 0 to signal a host task */ in CAU3_ForceError()
1334 base->CC_PC = CAU3_TASK_STOPERROR; in CAU3_ForceError()
1335 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in CAU3_ForceError()
1338 completionStatus = cau3_process_task_completion(base, taskDone); in CAU3_ForceError()
1340 cau3_release_semaphore(base); in CAU3_ForceError()
1367 status_t CAU3_LoadSpecialKeyContext(CAU3_Type *base, size_t keySize, cau3_key_slot_t keySlot, cau3_… in CAU3_LoadSpecialKeyContext() argument
1372 completionStatus = cau3_lock_semaphore(base); in CAU3_LoadSpecialKeyContext()
1375 cau3_release_semaphore(base); in CAU3_LoadSpecialKeyContext()
1381 base->CC_R[16] = keySize; /* keySize [8,16,24,32] */ in CAU3_LoadSpecialKeyContext()
1382 base->CC_R[17] = (uint32_t)keySlot; /* keySlot */ in CAU3_LoadSpecialKeyContext()
1383 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_LoadSpecialKeyContext()
1384 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_LoadSpecialKeyContext()
1385 base->CC_PC = CAU3_TASK_LD_SP_KEYCTX; /* call cau_load_special_key_context() */ in CAU3_LoadSpecialKeyContext()
1386 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in CAU3_LoadSpecialKeyContext()
1389 completionStatus = cau3_process_task_completion(base, taskDone); in CAU3_LoadSpecialKeyContext()
1391 cau3_release_semaphore(base); in CAU3_LoadSpecialKeyContext()
1407 status_t CAU3_ClearKeyContext(CAU3_Type *base, cau3_key_slot_t keySlot, cau3_task_done_t taskDone) in CAU3_ClearKeyContext() argument
1412 completionStatus = cau3_lock_semaphore(base); in CAU3_ClearKeyContext()
1415 cau3_release_semaphore(base); in CAU3_ClearKeyContext()
1421 base->CC_R[17] = (uint32_t)keySlot; /* keySlot */ in CAU3_ClearKeyContext()
1422 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_ClearKeyContext()
1423 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_ClearKeyContext()
1424 base->CC_PC = CAU3_TASK_CLR_KEYCTX; /* call cau_clear_key_context() */ in CAU3_ClearKeyContext()
1425 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in CAU3_ClearKeyContext()
1428 completionStatus = (uint32_t)cau3_process_task_completion(base, taskDone); in CAU3_ClearKeyContext()
1430 cau3_release_semaphore(base); in CAU3_ClearKeyContext()
1450 status_t CAU3_LoadKeyInitVector(CAU3_Type *base, const uint8_t *iv, cau3_key_slot_t keySlot, cau3_t… in CAU3_LoadKeyInitVector() argument
1455 completionStatus = cau3_lock_semaphore(base); in CAU3_LoadKeyInitVector()
1458 cau3_release_semaphore(base); in CAU3_LoadKeyInitVector()
1464 base->CC_R[16] = (uintptr_t)iv; /* pIv */ in CAU3_LoadKeyInitVector()
1465 base->CC_R[17] = (uint32_t)keySlot; /* keySlot */ in CAU3_LoadKeyInitVector()
1466 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_LoadKeyInitVector()
1467 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_LoadKeyInitVector()
1468 base->CC_PC = CAU3_TASK_LD_IV; /* call cau_load_iv() */ in CAU3_LoadKeyInitVector()
1469 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in CAU3_LoadKeyInitVector()
1472 completionStatus = cau3_process_task_completion(base, taskDone); in CAU3_LoadKeyInitVector()
1474 cau3_release_semaphore(base); in CAU3_LoadKeyInitVector()
1494 status_t CAU3_AES_KeyExpansion(CAU3_Type *base, cau3_key_slot_t keySlot, cau3_task_done_t taskDone) in CAU3_AES_KeyExpansion() argument
1499 completionStatus = cau3_lock_semaphore(base); in CAU3_AES_KeyExpansion()
1502 cau3_release_semaphore(base); in CAU3_AES_KeyExpansion()
1508 base->CC_R[17] = (uint32_t)keySlot; /* keySlot */ in CAU3_AES_KeyExpansion()
1509 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_AES_KeyExpansion()
1510 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_AES_KeyExpansion()
1511 base->CC_PC = CAU3_TASK_AES_KEY_SCH; /* call cau_aes_key_sched() */ in CAU3_AES_KeyExpansion()
1512 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in CAU3_AES_KeyExpansion()
1515 completionStatus = cau3_process_task_completion(base, taskDone); in CAU3_AES_KeyExpansion()
1517 cau3_release_semaphore(base); in CAU3_AES_KeyExpansion()
1536 status_t CAU3_AES_SetKey(CAU3_Type *base, cau3_handle_t *handle, const uint8_t *key, size_t keySize) in CAU3_AES_SetKey() argument
1563 return cau3_load_key_context(base, &cau3KeyCtx, handle->keySlot, handle->taskDone); in CAU3_AES_SetKey()
1579 status_t CAU3_AES_Cmac(CAU3_Type *base, cau3_handle_t *handle, const uint8_t *message, size_t size,… in CAU3_AES_Cmac() argument
1590 completionStatus = cau3_lock_semaphore(base); in CAU3_AES_Cmac()
1593 cau3_release_semaphore(base); in CAU3_AES_Cmac()
1599 base->CC_R[16] = (uintptr_t)message; /* pMessage */ in CAU3_AES_Cmac()
1600 base->CC_R[17] = (uint32_t)handle->keySlot; /* keySlot */ in CAU3_AES_Cmac()
1601 base->CC_R[18] = size; /* messageSize */ in CAU3_AES_Cmac()
1602 base->CC_R[19] = (uintptr_t)mac; /* pMac */ in CAU3_AES_Cmac()
1603 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_AES_Cmac()
1604 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_AES_Cmac()
1605 base->CC_PC = CAU3_TASK_AES128_CMAC; /* call cau_aes128_cmac() */ in CAU3_AES_Cmac()
1606 base->CC_CMD = (uint32_t)handle->taskDone; /* trigger cau3 execution */ in CAU3_AES_Cmac()
1609 completionStatus = cau3_process_task_completion(base, handle->taskDone); in CAU3_AES_Cmac()
1611 cau3_release_semaphore(base); in CAU3_AES_Cmac()
1644 static status_t cau3_hash_check_input_args(CAU3_Type *base, cau3_hash_ctx_t *ctx, cau3_hash_algo_t … in cau3_hash_check_input_args() argument
1652 if ((NULL == ctx) || (NULL == base)) in cau3_hash_check_input_args()
1689 static status_t CAU3_Sha1InitializeOutput(CAU3_Type *base, uint32_t *sha1State, cau3_task_done_t ta… in CAU3_Sha1InitializeOutput() argument
1694 completionStatus = cau3_lock_semaphore(base); in CAU3_Sha1InitializeOutput()
1697 cau3_release_semaphore(base); in CAU3_Sha1InitializeOutput()
1703 base->CC_R[29] = (uintptr_t)sha1State; /* pSha1State */ in CAU3_Sha1InitializeOutput()
1704 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_Sha1InitializeOutput()
1705 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_Sha1InitializeOutput()
1706 base->CC_PC = CAU3_TASK_SHA1_INIT_STATE; /* call cau_sha1_init_state() */ in CAU3_Sha1InitializeOutput()
1707 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in CAU3_Sha1InitializeOutput()
1710 completionStatus = cau3_process_task_completion(base, taskDone); in CAU3_Sha1InitializeOutput()
1712 cau3_release_semaphore(base); in CAU3_Sha1InitializeOutput()
1733 …CAU3_Type *base, const uint8_t *message, uint32_t numberOfBlocks, uint32_t *sha1State, cau3_task_d… in CAU3_Sha1Update() argument
1738 completionStatus = cau3_lock_semaphore(base); in CAU3_Sha1Update()
1741 cau3_release_semaphore(base); in CAU3_Sha1Update()
1747 base->CC_R[27] = (uintptr_t)message; /* pMessage */ in CAU3_Sha1Update()
1748 base->CC_R[28] = numberOfBlocks; /* n blocks */ in CAU3_Sha1Update()
1749 base->CC_R[29] = (uintptr_t)sha1State; /* output */ in CAU3_Sha1Update()
1750 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_Sha1Update()
1751 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_Sha1Update()
1752 base->CC_PC = CAU3_TASK_SHA1_HASH; /* call cau_sha1_hash_n() */ in CAU3_Sha1Update()
1753 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in CAU3_Sha1Update()
1756 completionStatus = cau3_process_task_completion(base, taskDone); in CAU3_Sha1Update()
1758 cau3_release_semaphore(base); in CAU3_Sha1Update()
1775 static status_t CAU3_Sha256InitializeOutput(CAU3_Type *base, uint32_t *sha256State, cau3_task_done_… in CAU3_Sha256InitializeOutput() argument
1780 completionStatus = cau3_lock_semaphore(base); in CAU3_Sha256InitializeOutput()
1783 cau3_release_semaphore(base); in CAU3_Sha256InitializeOutput()
1789 base->CC_R[29] = (uint32_t)sha256State; /* pSha256State */ in CAU3_Sha256InitializeOutput()
1790 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_Sha256InitializeOutput()
1791 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_Sha256InitializeOutput()
1792 base->CC_PC = CAU3_TASK_SHA256_INIT_STATE; /* call cau_sha256_init_state() */ in CAU3_Sha256InitializeOutput()
1793 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in CAU3_Sha256InitializeOutput()
1796 completionStatus = cau3_process_task_completion(base, taskDone); in CAU3_Sha256InitializeOutput()
1798 cau3_release_semaphore(base); in CAU3_Sha256InitializeOutput()
1820 …CAU3_Type *base, const uint8_t *message, uint32_t numberOfBlocks, uint32_t *sha256State, cau3_task… in CAU3_Sha256Update() argument
1825 completionStatus = cau3_lock_semaphore(base); in CAU3_Sha256Update()
1828 cau3_release_semaphore(base); in CAU3_Sha256Update()
1834 base->CC_R[27] = (uint32_t)message; /* pMessage */ in CAU3_Sha256Update()
1835 base->CC_R[28] = numberOfBlocks; /* = (64*numberOfBlocks) bytes */ in CAU3_Sha256Update()
1836 base->CC_R[29] = (uint32_t)sha256State; /* pSha256State */ in CAU3_Sha256Update()
1837 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_Sha256Update()
1838 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_Sha256Update()
1839 base->CC_PC = CAU3_TASK_SHA256_UPDATE; /* call cau_sha256_update() */ in CAU3_Sha256Update()
1840 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in CAU3_Sha256Update()
1843 completionStatus = cau3_process_task_completion(base, taskDone); in CAU3_Sha256Update()
1845 cau3_release_semaphore(base); in CAU3_Sha256Update()
1858 static status_t cau3_hash_engine_init(CAU3_Type *base, cau3_hash_ctx_internal_t *ctxInternal) in cau3_hash_engine_init() argument
1866 status = CAU3_Sha256InitializeOutput(base, ctxInternal->runningHash, kCAU3_TaskDonePoll); in cau3_hash_engine_init()
1871 status = CAU3_Sha1InitializeOutput(base, ctxInternal->runningHash, kCAU3_TaskDonePoll); in cau3_hash_engine_init()
1890 static status_t cau3_hash_process_message_data(CAU3_Type *base, in cau3_hash_process_message_data() argument
1926 …status = funcUpdate(base, &ctxInternal->blk.b[0], CAU3_HASH_BLOCK_SIZE / 64u, ctxInternal->running… in cau3_hash_process_message_data()
1937 …funcUpdate(base, message, CAU3_HASH_BLOCK_SIZE / 64u, ctxInternal->runningHash, kCAU3_TaskDonePoll… in cau3_hash_process_message_data()
1963 static status_t cau3_hash_finalize(CAU3_Type *base, cau3_hash_ctx_internal_t *ctxInternal) in cau3_hash_finalize() argument
1996 …status = funcUpdate(base, &ctxInternal->blk.b[0], 1, ctxInternal->runningHash, kCAU3_TaskDonePoll); in cau3_hash_finalize()
2012 status = funcUpdate(base, &lastBlock.b[0], 1, ctxInternal->runningHash, kCAU3_TaskDonePoll); in cau3_hash_finalize()
2033 …status = funcUpdate(base, &ctxInternal->blk.b[0], 1, ctxInternal->runningHash, kCAU3_TaskDonePoll); in cau3_hash_finalize()
2039 …status = funcUpdate(base, &lastBlock.b[0], 1, ctxInternal->runningHash, kCAU3_TaskDonePol… in cau3_hash_finalize()
2061 status_t CAU3_HASH_Init(CAU3_Type *base, cau3_hash_ctx_t *ctx, cau3_hash_algo_t algo) in CAU3_HASH_Init() argument
2070 status = cau3_hash_check_input_args(base, ctx, algo); in CAU3_HASH_Init()
2106 status_t CAU3_HASH_Update(CAU3_Type *base, cau3_hash_ctx_t *ctx, const uint8_t *input, size_t input… in CAU3_HASH_Update() argument
2140 status = cau3_hash_engine_init(base, ctxInternal); in CAU3_HASH_Update()
2150 status = cau3_hash_process_message_data(base, ctxInternal, input, inputSize); in CAU3_HASH_Update()
2164 status_t CAU3_HASH_Finish(CAU3_Type *base, cau3_hash_ctx_t *ctx, uint8_t *output, size_t *outputSiz… in CAU3_HASH_Finish() argument
2179 status = cau3_hash_engine_init(base, ctxInternal); in CAU3_HASH_Finish()
2204 status = cau3_hash_finalize(base, ctxInternal); in CAU3_HASH_Finish()
2238 …CAU3_Type *base, cau3_hash_algo_t algo, const uint8_t *input, size_t inputSize, uint8_t *output, s… in CAU3_HASH() argument
2243 status = CAU3_HASH_Init(base, &hashCtx, algo); in CAU3_HASH()
2249 status = CAU3_HASH_Update(base, &hashCtx, input, inputSize); in CAU3_HASH()
2255 status = CAU3_HASH_Finish(base, &hashCtx, output, outputSize); in CAU3_HASH()
2261 static status_t cau3_wait(CAU3_Type *base) in cau3_wait() argument
2271 uint32_t temp32 = base->STA; in cau3_wait()
2278 base->COM = CAU3_COM_ALL_MASK; /* Reset all engine to clear the error flag */ in cau3_wait()
2285 base->CW = (uint32_t)kCAU3_ClearDataSize; in cau3_wait()
2287 base->STA = (uint32_t)kCAU3_StatusDoneIsr; in cau3_wait()
2300 static void cau3_clear_all(CAU3_Type *base, bool addPKHA) in cau3_clear_all() argument
2302 base->CW = (uint32_t)kCAU3_ClearAll; in cau3_clear_all()
2305 (void)cau3_pkha_clear_regabne(base, true, true, true, true); in cau3_clear_all()
2357 static status_t cau3_pkha_clear_regabne(CAU3_Type *base, bool A, bool B, bool N, bool E) in cau3_pkha_clear_regabne() argument
2384 base->MDPK = mode; in cau3_pkha_clear_regabne()
2387 return cau3_wait(base); in cau3_pkha_clear_regabne()
2404 static void cau3_pkha_write_word(CAU3_Type *base, cau3_pkha_reg_area_t reg, uint8_t index, uint32_t… in cau3_pkha_write_word() argument
2406 __IO uint32_t *pka = base->PKA0; in cau3_pkha_write_word()
2407 __IO uint32_t *pkb = base->PKB0; in cau3_pkha_write_word()
2408 __IO uint32_t *pkn = base->PKN0; in cau3_pkha_write_word()
2425 base->PKE[index] = data; in cau3_pkha_write_word()
2434 static uint32_t cau3_pkha_read_word(CAU3_Type *base, cau3_pkha_reg_area_t reg, uint8_t index) in cau3_pkha_read_word() argument
2437 __IO uint32_t *pka = base->PKA0; in cau3_pkha_read_word()
2438 __IO uint32_t *pkb = base->PKB0; in cau3_pkha_read_word()
2439 __IO uint32_t *pkn = base->PKN0; in cau3_pkha_read_word()
2463 CAU3_Type *base, cau3_pkha_reg_area_t reg, uint8_t quad, const uint8_t *data, size_t dataSize) in cau3_pkha_write_reg() argument
2473 cau3_pkha_write_word(base, reg, startIndex++, cau3_get_word_from_unaligned(data)); in cau3_pkha_write_reg()
2481 cau3_pkha_write_word(base, reg, startIndex, outWord); in cau3_pkha_write_reg()
2489 static void cau3_pkha_read_reg(CAU3_Type *base, cau3_pkha_reg_area_t reg, uint8_t quad, uint8_t *da… in cau3_pkha_read_reg() argument
2498 word = cau3_pkha_read_word(base, reg, startIndex++); in cau3_pkha_read_reg()
2508 static void cau3_pkha_init_data(CAU3_Type *base, in cau3_pkha_init_data() argument
2538 base->CW = clearMask; in cau3_pkha_init_data()
2539 base->STA = (uint32_t)kCAU3_StatusDoneIsr; in cau3_pkha_init_data()
2540 …(void)cau3_pkha_clear_regabne(base, (bool)(uintptr_t)A, (bool)(uintptr_t)B, (bool)(uintptr_t)N, (b… in cau3_pkha_init_data()
2546 base->PKNSZ = sizeN; in cau3_pkha_init_data()
2549 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegN, 0, N, sizeN); in cau3_pkha_init_data()
2555 base->PKASZ = sizeA; in cau3_pkha_init_data()
2558 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 0, A, sizeA); in cau3_pkha_init_data()
2564 base->PKBSZ = sizeB; in cau3_pkha_init_data()
2567 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 0, B, sizeB); in cau3_pkha_init_data()
2573 base->PKESZ = sizeE; in cau3_pkha_init_data()
2576 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegE, 0, E, sizeE); in cau3_pkha_init_data()
2631 static status_t cau3_pkha_init_mode(CAU3_Type *base, const cau3_pkha_mode_params_t *params) in cau3_pkha_init_mode() argument
2665 base->MDPK = modeReg; in cau3_pkha_init_mode()
2667 retval = cau3_wait(base); in cau3_pkha_init_mode()
2672 …CAU3_Type *base, const uint8_t *N, size_t sizeN, uint8_t *result, size_t *resultSize, cau3_pkha_f2… in cau3_pkha_modR2() argument
2681 cau3_pkha_init_data(base, NULL, 0, NULL, 0, N, sizeN, NULL, 0); in cau3_pkha_modR2()
2682 status = cau3_pkha_init_mode(base, &params); in cau3_pkha_modR2()
2689 *resultSize = base->PKBSZ; in cau3_pkha_modR2()
2691 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 0, result, *resultSize); in cau3_pkha_modR2()
2698 static status_t cau3_pkha_modmul(CAU3_Type *base, in cau3_pkha_modmul() argument
2735 cau3_pkha_init_data(base, A, sizeA, B, sizeB, N, sizeN, NULL, 0); in cau3_pkha_modmul()
2736 status = cau3_pkha_init_mode(base, &params); in cau3_pkha_modmul()
2743 *resultSize = base->PKBSZ; in cau3_pkha_modmul()
2745 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 0, result, *resultSize); in cau3_pkha_modmul()
2856 status_t CAU3_PKHA_NormalToMontgomery(CAU3_Type *base, in CAU3_PKHA_NormalToMontgomery() argument
2871 status = cau3_lock_semaphore(base); in CAU3_PKHA_NormalToMontgomery()
2874 cau3_release_semaphore(base); in CAU3_PKHA_NormalToMontgomery()
2883 status = cau3_pkha_modR2(base, N, sizeN, R2, sizeR2, arithType); in CAU3_PKHA_NormalToMontgomery()
2887 cau3_release_semaphore(base); in CAU3_PKHA_NormalToMontgomery()
2895 status = cau3_pkha_modmul(base, A, *sizeA, R2, *sizeR2, N, sizeN, A, sizeA, arithType, in CAU3_PKHA_NormalToMontgomery()
2900 cau3_release_semaphore(base); in CAU3_PKHA_NormalToMontgomery()
2909 status = cau3_pkha_modmul(base, B, *sizeB, R2, *sizeR2, N, sizeN, B, sizeB, arithType, in CAU3_PKHA_NormalToMontgomery()
2914 cau3_release_semaphore(base); in CAU3_PKHA_NormalToMontgomery()
2920 cau3_clear_all(base, true); in CAU3_PKHA_NormalToMontgomery()
2928 cau3_release_semaphore(base); in CAU3_PKHA_NormalToMontgomery()
2951 status_t CAU3_PKHA_MontgomeryToNormal(CAU3_Type *base, in CAU3_PKHA_MontgomeryToNormal() argument
2965 status = cau3_lock_semaphore(base); in CAU3_PKHA_MontgomeryToNormal()
2968 cau3_release_semaphore(base); in CAU3_PKHA_MontgomeryToNormal()
2976 status = cau3_pkha_modmul(base, A, *sizeA, &one, sizeof(one), N, sizeN, A, sizeA, arithType, in CAU3_PKHA_MontgomeryToNormal()
2981 cau3_release_semaphore(base); in CAU3_PKHA_MontgomeryToNormal()
2990 status = cau3_pkha_modmul(base, B, *sizeB, &one, sizeof(one), N, sizeN, B, sizeB, arithType, in CAU3_PKHA_MontgomeryToNormal()
2995 cau3_release_semaphore(base); in CAU3_PKHA_MontgomeryToNormal()
3001 cau3_clear_all(base, true); in CAU3_PKHA_MontgomeryToNormal()
3003 cau3_release_semaphore(base); in CAU3_PKHA_MontgomeryToNormal()
3027 status_t CAU3_PKHA_ModAdd(CAU3_Type *base, in CAU3_PKHA_ModAdd() argument
3055 status = cau3_lock_semaphore(base); in CAU3_PKHA_ModAdd()
3058 cau3_release_semaphore(base); in CAU3_PKHA_ModAdd()
3067 cau3_pkha_init_data(base, A, sizeA, B, sizeB, N, sizeN, NULL, 0); in CAU3_PKHA_ModAdd()
3068 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ModAdd()
3075 *resultSize = base->PKBSZ; in CAU3_PKHA_ModAdd()
3077 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 0, result, *resultSize); in CAU3_PKHA_ModAdd()
3081 cau3_clear_all(base, true); in CAU3_PKHA_ModAdd()
3083 cau3_release_semaphore(base); in CAU3_PKHA_ModAdd()
3105 status_t CAU3_PKHA_ModSub1(CAU3_Type *base, in CAU3_PKHA_ModSub1() argument
3129 status = cau3_lock_semaphore(base); in CAU3_PKHA_ModSub1()
3132 cau3_release_semaphore(base); in CAU3_PKHA_ModSub1()
3139 cau3_pkha_init_data(base, A, sizeA, B, sizeB, N, sizeN, NULL, 0); in CAU3_PKHA_ModSub1()
3141 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ModSub1()
3148 *resultSize = base->PKBSZ; in CAU3_PKHA_ModSub1()
3150 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 0, result, *resultSize); in CAU3_PKHA_ModSub1()
3154 cau3_clear_all(base, true); in CAU3_PKHA_ModSub1()
3156 cau3_release_semaphore(base); in CAU3_PKHA_ModSub1()
3178 status_t CAU3_PKHA_ModSub2(CAU3_Type *base, in CAU3_PKHA_ModSub2() argument
3192 status = cau3_lock_semaphore(base); in CAU3_PKHA_ModSub2()
3195 cau3_release_semaphore(base); in CAU3_PKHA_ModSub2()
3203 cau3_pkha_init_data(base, A, sizeA, B, sizeB, N, sizeN, NULL, 0); in CAU3_PKHA_ModSub2()
3204 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ModSub2()
3211 *resultSize = base->PKBSZ; in CAU3_PKHA_ModSub2()
3213 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 0, result, *resultSize); in CAU3_PKHA_ModSub2()
3217 cau3_clear_all(base, true); in CAU3_PKHA_ModSub2()
3219 cau3_release_semaphore(base); in CAU3_PKHA_ModSub2()
3247 status_t CAU3_PKHA_ModMul(CAU3_Type *base, in CAU3_PKHA_ModMul() argument
3264 status = cau3_lock_semaphore(base); in CAU3_PKHA_ModMul()
3267 cau3_release_semaphore(base); in CAU3_PKHA_ModMul()
3273 …cau3_pkha_modmul(base, A, sizeA, B, sizeB, N, sizeN, result, resultSize, arithType, montIn, montOu… in CAU3_PKHA_ModMul()
3275 cau3_clear_all(base, true); in CAU3_PKHA_ModMul()
3277 cau3_release_semaphore(base); in CAU3_PKHA_ModMul()
3302 status_t CAU3_PKHA_ModExp(CAU3_Type *base, in CAU3_PKHA_ModExp() argument
3327 status = cau3_lock_semaphore(base); in CAU3_PKHA_ModExp()
3330 cau3_release_semaphore(base); in CAU3_PKHA_ModExp()
3341 cau3_pkha_init_data(base, A, sizeA, NULL, 0, N, sizeN, E, sizeE); in CAU3_PKHA_ModExp()
3342 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ModExp()
3349 *resultSize = base->PKBSZ; in CAU3_PKHA_ModExp()
3351 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 0, result, *resultSize); in CAU3_PKHA_ModExp()
3355 cau3_clear_all(base, true); in CAU3_PKHA_ModExp()
3357 cau3_release_semaphore(base); in CAU3_PKHA_ModExp()
3381 status_t CAU3_PKHA_ModSqrt(CAU3_Type *base, in CAU3_PKHA_ModSqrt() argument
3399 status = cau3_lock_semaphore(base); in CAU3_PKHA_ModSqrt()
3402 cau3_release_semaphore(base); in CAU3_PKHA_ModSqrt()
3410 cau3_pkha_init_data(base, A, sizeA, NULL, 0, N, sizeN, NULL, 0); in CAU3_PKHA_ModSqrt()
3411 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ModSqrt()
3418 *resultSize = base->PKBSZ; in CAU3_PKHA_ModSqrt()
3420 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 0, result, *resultSize); in CAU3_PKHA_ModSqrt()
3424 cau3_clear_all(base, true); in CAU3_PKHA_ModSqrt()
3426 cau3_release_semaphore(base); in CAU3_PKHA_ModSqrt()
3447 status_t CAU3_PKHA_ModRed(CAU3_Type *base, in CAU3_PKHA_ModRed() argument
3460 status = cau3_lock_semaphore(base); in CAU3_PKHA_ModRed()
3463 cau3_release_semaphore(base); in CAU3_PKHA_ModRed()
3472 cau3_pkha_init_data(base, A, sizeA, NULL, 0, N, sizeN, NULL, 0); in CAU3_PKHA_ModRed()
3473 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ModRed()
3480 *resultSize = base->PKBSZ; in CAU3_PKHA_ModRed()
3482 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 0, result, *resultSize); in CAU3_PKHA_ModRed()
3486 cau3_clear_all(base, true); in CAU3_PKHA_ModRed()
3488 cau3_release_semaphore(base); in CAU3_PKHA_ModRed()
3509 status_t CAU3_PKHA_ModInv(CAU3_Type *base, in CAU3_PKHA_ModInv() argument
3531 status = cau3_lock_semaphore(base); in CAU3_PKHA_ModInv()
3534 cau3_release_semaphore(base); in CAU3_PKHA_ModInv()
3543 cau3_pkha_init_data(base, A, sizeA, NULL, 0, N, sizeN, NULL, 0); in CAU3_PKHA_ModInv()
3544 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ModInv()
3551 *resultSize = base->PKBSZ; in CAU3_PKHA_ModInv()
3553 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 0, result, *resultSize); in CAU3_PKHA_ModInv()
3557 cau3_clear_all(base, true); in CAU3_PKHA_ModInv()
3559 cau3_release_semaphore(base); in CAU3_PKHA_ModInv()
3579 …CAU3_Type *base, const uint8_t *N, size_t sizeN, uint8_t *result, size_t *resultSize, cau3_pkha_f2… in CAU3_PKHA_ModR2() argument
3583 status = cau3_lock_semaphore(base); in CAU3_PKHA_ModR2()
3586 cau3_release_semaphore(base); in CAU3_PKHA_ModR2()
3590 status = cau3_pkha_modR2(base, N, sizeN, result, resultSize, arithType); in CAU3_PKHA_ModR2()
3591 cau3_clear_all(base, true); in CAU3_PKHA_ModR2()
3593 cau3_release_semaphore(base); in CAU3_PKHA_ModR2()
3616 …CAU3_Type *base, const uint8_t *P, size_t sizeP, size_t sizeE, uint8_t *result, size_t *resultSize) in CAU3_PKHA_ModRR() argument
3622 status = cau3_lock_semaphore(base); in CAU3_PKHA_ModRR()
3625 cau3_release_semaphore(base); in CAU3_PKHA_ModRR()
3633 cau3_pkha_init_data(base, NULL, 0, NULL, 0, P, sizeP, NULL, sizeE); in CAU3_PKHA_ModRR()
3634 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ModRR()
3641 *resultSize = base->PKBSZ; in CAU3_PKHA_ModRR()
3643 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 0, result, *resultSize); in CAU3_PKHA_ModRR()
3648 cau3_release_semaphore(base); in CAU3_PKHA_ModRR()
3669 status_t CAU3_PKHA_ModGcd(CAU3_Type *base, in CAU3_PKHA_ModGcd() argument
3682 status = cau3_lock_semaphore(base); in CAU3_PKHA_ModGcd()
3685 cau3_release_semaphore(base); in CAU3_PKHA_ModGcd()
3694 cau3_pkha_init_data(base, A, sizeA, NULL, 0, N, sizeN, NULL, 0); in CAU3_PKHA_ModGcd()
3695 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ModGcd()
3702 *resultSize = base->PKBSZ; in CAU3_PKHA_ModGcd()
3704 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 0, result, *resultSize); in CAU3_PKHA_ModGcd()
3708 cau3_clear_all(base, true); in CAU3_PKHA_ModGcd()
3710 cau3_release_semaphore(base); in CAU3_PKHA_ModGcd()
3731 status_t CAU3_PKHA_PrimalityTest(CAU3_Type *base, in CAU3_PKHA_PrimalityTest() argument
3745 status = cau3_lock_semaphore(base); in CAU3_PKHA_PrimalityTest()
3748 cau3_release_semaphore(base); in CAU3_PKHA_PrimalityTest()
3755 cau3_pkha_init_data(base, A, sizeA, B, sizeB, N, sizeN, NULL, 0); in CAU3_PKHA_PrimalityTest()
3756 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_PrimalityTest()
3761 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 0, &result, 1); in CAU3_PKHA_PrimalityTest()
3766 cau3_clear_all(base, true); in CAU3_PKHA_PrimalityTest()
3768 cau3_release_semaphore(base); in CAU3_PKHA_PrimalityTest()
3792 status_t CAU3_PKHA_ECC_PointAdd(CAU3_Type *base, in CAU3_PKHA_ECC_PointAdd() argument
3808 status = cau3_lock_semaphore(base); in CAU3_PKHA_ECC_PointAdd()
3811 cau3_release_semaphore(base); in CAU3_PKHA_ECC_PointAdd()
3829 base->CW = clearMask; in CAU3_PKHA_ECC_PointAdd()
3830 base->STA = (uint32_t)kCAU3_StatusDoneIsr; in CAU3_PKHA_ECC_PointAdd()
3831 (void)cau3_pkha_clear_regabne(base, true, true, true, false); in CAU3_PKHA_ECC_PointAdd()
3834 base->PKNSZ = size; in CAU3_PKHA_ECC_PointAdd()
3835 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegN, 0, N, size); in CAU3_PKHA_ECC_PointAdd()
3837 base->PKASZ = size; in CAU3_PKHA_ECC_PointAdd()
3838 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 0, A->X, size); in CAU3_PKHA_ECC_PointAdd()
3839 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 1, A->Y, size); in CAU3_PKHA_ECC_PointAdd()
3840 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 3, aCurveParam, size); in CAU3_PKHA_ECC_PointAdd()
3842 base->PKBSZ = size; in CAU3_PKHA_ECC_PointAdd()
3843 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 0, bCurveParam, size); in CAU3_PKHA_ECC_PointAdd()
3844 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 1, B->X, size); in CAU3_PKHA_ECC_PointAdd()
3845 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 2, B->Y, size); in CAU3_PKHA_ECC_PointAdd()
3848 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 3, R2modN, size); in CAU3_PKHA_ECC_PointAdd()
3851 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ECC_PointAdd()
3856 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 1, result->X, size); in CAU3_PKHA_ECC_PointAdd()
3857 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 2, result->Y, size); in CAU3_PKHA_ECC_PointAdd()
3860 cau3_clear_all(base, true); in CAU3_PKHA_ECC_PointAdd()
3862 cau3_release_semaphore(base); in CAU3_PKHA_ECC_PointAdd()
3883 status_t CAU3_PKHA_ECC_PointDouble(CAU3_Type *base, in CAU3_PKHA_ECC_PointDouble() argument
3897 status = cau3_lock_semaphore(base); in CAU3_PKHA_ECC_PointDouble()
3900 cau3_release_semaphore(base); in CAU3_PKHA_ECC_PointDouble()
3917 base->CW = clearMask; in CAU3_PKHA_ECC_PointDouble()
3918 base->STA = (uint32_t)kCAU3_StatusDoneIsr; in CAU3_PKHA_ECC_PointDouble()
3919 (void)cau3_pkha_clear_regabne(base, true, true, true, false); in CAU3_PKHA_ECC_PointDouble()
3922 base->PKNSZ = size; in CAU3_PKHA_ECC_PointDouble()
3923 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegN, 0, N, size); in CAU3_PKHA_ECC_PointDouble()
3925 base->PKASZ = size; in CAU3_PKHA_ECC_PointDouble()
3926 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 3, aCurveParam, size); in CAU3_PKHA_ECC_PointDouble()
3928 base->PKBSZ = size; in CAU3_PKHA_ECC_PointDouble()
3929 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 0, bCurveParam, size); in CAU3_PKHA_ECC_PointDouble()
3930 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 1, B->X, size); in CAU3_PKHA_ECC_PointDouble()
3931 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 2, B->Y, size); in CAU3_PKHA_ECC_PointDouble()
3932 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ECC_PointDouble()
3937 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 1, result->X, size); in CAU3_PKHA_ECC_PointDouble()
3938 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 2, result->Y, size); in CAU3_PKHA_ECC_PointDouble()
3941 cau3_clear_all(base, true); in CAU3_PKHA_ECC_PointDouble()
3943 cau3_release_semaphore(base); in CAU3_PKHA_ECC_PointDouble()
3969 status_t CAU3_PKHA_ECC_PointMul(CAU3_Type *base, in CAU3_PKHA_ECC_PointMul() argument
3987 status = cau3_lock_semaphore(base); in CAU3_PKHA_ECC_PointMul()
3990 cau3_release_semaphore(base); in CAU3_PKHA_ECC_PointMul()
4009 base->CW = clearMask; in CAU3_PKHA_ECC_PointMul()
4010 base->STA = (uint32_t)kCAU3_StatusDoneIsr; in CAU3_PKHA_ECC_PointMul()
4011 (void)cau3_pkha_clear_regabne(base, true, true, true, true); in CAU3_PKHA_ECC_PointMul()
4014 base->PKNSZ = size; in CAU3_PKHA_ECC_PointMul()
4015 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegN, 0, N, size); in CAU3_PKHA_ECC_PointMul()
4017 base->PKESZ = sizeE; in CAU3_PKHA_ECC_PointMul()
4018 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegE, 0, E, sizeE); in CAU3_PKHA_ECC_PointMul()
4020 base->PKASZ = size; in CAU3_PKHA_ECC_PointMul()
4021 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 0, A->X, size); in CAU3_PKHA_ECC_PointMul()
4022 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 1, A->Y, size); in CAU3_PKHA_ECC_PointMul()
4023 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 3, aCurveParam, size); in CAU3_PKHA_ECC_PointMul()
4025 base->PKBSZ = size; in CAU3_PKHA_ECC_PointMul()
4026 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 0, bCurveParam, size); in CAU3_PKHA_ECC_PointMul()
4029 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 1, R2modN, size); in CAU3_PKHA_ECC_PointMul()
4032 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ECC_PointMul()
4037 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 1, result->X, size); in CAU3_PKHA_ECC_PointMul()
4038 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 2, result->Y, size); in CAU3_PKHA_ECC_PointMul()
4041 cau3_clear_all(base, true); in CAU3_PKHA_ECC_PointMul()
4043 cau3_release_semaphore(base); in CAU3_PKHA_ECC_PointMul()
4071 status_t CAU3_PKHA_ECM_PointMul(CAU3_Type *base, in CAU3_PKHA_ECM_PointMul() argument
4087 status = cau3_lock_semaphore(base); in CAU3_PKHA_ECM_PointMul()
4090 cau3_release_semaphore(base); in CAU3_PKHA_ECM_PointMul()
4108 base->CW = clearMask; in CAU3_PKHA_ECM_PointMul()
4109 base->STA = (uint32_t)kCAU3_StatusDoneIsr; in CAU3_PKHA_ECM_PointMul()
4110 (void)cau3_pkha_clear_regabne(base, true, true, true, true); in CAU3_PKHA_ECM_PointMul()
4112 base->PKNSZ = size; in CAU3_PKHA_ECM_PointMul()
4113 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegN, 0, N, size); in CAU3_PKHA_ECM_PointMul()
4115 base->PKESZ = sizeE; in CAU3_PKHA_ECM_PointMul()
4116 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegE, 0, E, sizeE); in CAU3_PKHA_ECM_PointMul()
4118 base->PKASZ = size; in CAU3_PKHA_ECM_PointMul()
4119 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 0, inputCoordinate, size); in CAU3_PKHA_ECM_PointMul()
4120 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 3, A24, size); in CAU3_PKHA_ECM_PointMul()
4124 base->PKBSZ = size; in CAU3_PKHA_ECM_PointMul()
4125 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 1, R2modN, size); in CAU3_PKHA_ECM_PointMul()
4128 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ECM_PointMul()
4133 (void)cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 1, outputCoordinate, size); in CAU3_PKHA_ECM_PointMul()
4136 cau3_clear_all(base, true); in CAU3_PKHA_ECM_PointMul()
4138 cau3_release_semaphore(base); in CAU3_PKHA_ECM_PointMul()
4164 status_t CAU3_PKHA_ECT_PointMul(CAU3_Type *base, in CAU3_PKHA_ECT_PointMul() argument
4181 status = cau3_lock_semaphore(base); in CAU3_PKHA_ECT_PointMul()
4184 cau3_release_semaphore(base); in CAU3_PKHA_ECT_PointMul()
4202 base->CW = clearMask; in CAU3_PKHA_ECT_PointMul()
4203 base->STA = (uint32_t)kCAU3_StatusDoneIsr; in CAU3_PKHA_ECT_PointMul()
4204 (void)cau3_pkha_clear_regabne(base, true, true, true, true); in CAU3_PKHA_ECT_PointMul()
4206 base->PKNSZ = size; in CAU3_PKHA_ECT_PointMul()
4207 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegN, 0, N, size); in CAU3_PKHA_ECT_PointMul()
4209 base->PKESZ = sizeE; in CAU3_PKHA_ECT_PointMul()
4210 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegE, 0, E, sizeE); in CAU3_PKHA_ECT_PointMul()
4212 base->PKASZ = size; in CAU3_PKHA_ECT_PointMul()
4213 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 0, A->X, size); in CAU3_PKHA_ECT_PointMul()
4214 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 1, A->Y, size); in CAU3_PKHA_ECT_PointMul()
4215 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 3, aCurveParam, size); in CAU3_PKHA_ECT_PointMul()
4217 base->PKBSZ = size; in CAU3_PKHA_ECT_PointMul()
4218 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 0, dCurveParam, size); in CAU3_PKHA_ECT_PointMul()
4221 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 1, R2modN, size); in CAU3_PKHA_ECT_PointMul()
4224 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ECT_PointMul()
4229 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 1, result->X, size); in CAU3_PKHA_ECT_PointMul()
4230 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 2, result->Y, size); in CAU3_PKHA_ECT_PointMul()
4233 cau3_clear_all(base, true); in CAU3_PKHA_ECT_PointMul()
4235 cau3_release_semaphore(base); in CAU3_PKHA_ECT_PointMul()
4258 status_t CAU3_PKHA_ECT_PointAdd(CAU3_Type *base, in CAU3_PKHA_ECT_PointAdd() argument
4273 status = cau3_lock_semaphore(base); in CAU3_PKHA_ECT_PointAdd()
4276 cau3_release_semaphore(base); in CAU3_PKHA_ECT_PointAdd()
4293 base->CW = clearMask; in CAU3_PKHA_ECT_PointAdd()
4294 base->STA = (uint32_t)kCAU3_StatusDoneIsr; in CAU3_PKHA_ECT_PointAdd()
4295 (void)cau3_pkha_clear_regabne(base, true, true, true, false); in CAU3_PKHA_ECT_PointAdd()
4298 base->PKNSZ = size; in CAU3_PKHA_ECT_PointAdd()
4299 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegN, 0, N, size); in CAU3_PKHA_ECT_PointAdd()
4301 base->PKASZ = size; in CAU3_PKHA_ECT_PointAdd()
4302 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 0, A->X, size); in CAU3_PKHA_ECT_PointAdd()
4303 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 1, A->Y, size); in CAU3_PKHA_ECT_PointAdd()
4304 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegA, 3, aCurveParam, size); in CAU3_PKHA_ECT_PointAdd()
4306 base->PKBSZ = size; in CAU3_PKHA_ECT_PointAdd()
4307 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 0, dCurveParam, size); in CAU3_PKHA_ECT_PointAdd()
4308 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 1, B->X, size); in CAU3_PKHA_ECT_PointAdd()
4309 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 2, B->Y, size); in CAU3_PKHA_ECT_PointAdd()
4312 (void)cau3_pkha_write_reg(base, kCAU3_PKHA_RegB, 3, R2modN, size); in CAU3_PKHA_ECT_PointAdd()
4315 status = cau3_pkha_init_mode(base, &params); in CAU3_PKHA_ECT_PointAdd()
4320 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 1, result->X, size); in CAU3_PKHA_ECT_PointAdd()
4321 cau3_pkha_read_reg(base, kCAU3_PKHA_RegB, 2, result->Y, size); in CAU3_PKHA_ECT_PointAdd()
4324 cau3_clear_all(base, true); in CAU3_PKHA_ECT_PointAdd()
4326 cau3_release_semaphore(base); in CAU3_PKHA_ECT_PointAdd()
4342 status_t CAU3_TDES_CheckParity(CAU3_Type *base, cau3_key_slot_t keySlot) in CAU3_TDES_CheckParity() argument
4348 completionStatus = cau3_lock_semaphore(base); in CAU3_TDES_CheckParity()
4351 cau3_release_semaphore(base); in CAU3_TDES_CheckParity()
4359 base->CC_R[17] = (uint32_t)keySlot; /* keySlot */ in CAU3_TDES_CheckParity()
4360 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_TDES_CheckParity()
4361 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_TDES_CheckParity()
4362 base->CC_PC = CAU3_TASK_3DES_CHECK_PARITY; /* call cau_3des_chk_parity() */ in CAU3_TDES_CheckParity()
4363 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in CAU3_TDES_CheckParity()
4366 completionStatus = cau3_process_task_completion(base, taskDone); in CAU3_TDES_CheckParity()
4368 cau3_release_semaphore(base); in CAU3_TDES_CheckParity()
4384 status_t CAU3_TDES_SetKey(CAU3_Type *base, cau3_handle_t *handle, const uint8_t *key, size_t keySiz… in CAU3_TDES_SetKey() argument
4398 return cau3_load_key(base, key, keySize, (uint32_t)handle->keySlot, handle->taskDone); in CAU3_TDES_SetKey()
4415 status_t CAU3_TDES_Encrypt(CAU3_Type *base, cau3_handle_t *handle, const uint8_t *plaintext, uint8_… in CAU3_TDES_Encrypt() argument
4420 completionStatus = cau3_lock_semaphore(base); in CAU3_TDES_Encrypt()
4423 cau3_release_semaphore(base); in CAU3_TDES_Encrypt()
4429 base->CC_R[16] = (uintptr_t)plaintext; /* pPlainText */ in CAU3_TDES_Encrypt()
4430 base->CC_R[17] = (uint32_t)handle->keySlot; /* keySlot */ in CAU3_TDES_Encrypt()
4431 base->CC_R[19] = (uintptr_t)ciphertext; /* pCipherText */ in CAU3_TDES_Encrypt()
4432 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_TDES_Encrypt()
4433 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_TDES_Encrypt()
4434 base->CC_PC = CAU3_TASK_3DES_ENCRYPT; /* call cau_3des_encrypt() */ in CAU3_TDES_Encrypt()
4435 base->CC_CMD = (uint32_t)handle->taskDone; /* trigger cau3 execution */ in CAU3_TDES_Encrypt()
4438 completionStatus = cau3_process_task_completion(base, handle->taskDone); in CAU3_TDES_Encrypt()
4440 cau3_release_semaphore(base); in CAU3_TDES_Encrypt()
4458 status_t CAU3_TDES_Decrypt(CAU3_Type *base, cau3_handle_t *handle, const uint8_t *ciphertext, uint8… in CAU3_TDES_Decrypt() argument
4463 completionStatus = cau3_lock_semaphore(base); in CAU3_TDES_Decrypt()
4466 cau3_release_semaphore(base); in CAU3_TDES_Decrypt()
4472 base->CC_R[16] = (uintptr_t)ciphertext; /* pCipherText */ in CAU3_TDES_Decrypt()
4473 base->CC_R[17] = (uint32_t)handle->keySlot; /* keySlot */ in CAU3_TDES_Decrypt()
4474 base->CC_R[19] = (uintptr_t)plaintext; /* pPlainText */ in CAU3_TDES_Decrypt()
4475 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_TDES_Decrypt()
4476 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_TDES_Decrypt()
4477 base->CC_PC = CAU3_TASK_3DES_DECRYPT; /* call cau_3des_decrypt() */ in CAU3_TDES_Decrypt()
4478 base->CC_CMD = (uint32_t)handle->taskDone; /* trigger cau3 execution */ in CAU3_TDES_Decrypt()
4481 completionStatus = cau3_process_task_completion(base, handle->taskDone); in CAU3_TDES_Decrypt()
4483 cau3_release_semaphore(base); in CAU3_TDES_Decrypt()
4499 status_t CAU3_CHACHA20_POLY1305_SetKey(CAU3_Type *base, cau3_handle_t *handle, const uint8_t *key, … in CAU3_CHACHA20_POLY1305_SetKey() argument
4524 return cau3_load_key(base, tempKey.b, keySize, (uint32_t)handle->keySlot, handle->taskDone); in CAU3_CHACHA20_POLY1305_SetKey()
4527 static status_t cau3_load_nonce(CAU3_Type *base, const uint8_t *nonce, cau3_key_slot_t keySlot) in cau3_load_nonce() argument
4544 return CAU3_LoadKeyInitVector(base, tempIv.b, keySlot, kCAU3_TaskDonePoll); in cau3_load_nonce()
4566 status_t CAU3_CHACHA20_POLY1305_Encrypt(CAU3_Type *base, in CAU3_CHACHA20_POLY1305_Encrypt() argument
4578 completionStatus = cau3_load_nonce(base, nonce, handle->keySlot); in CAU3_CHACHA20_POLY1305_Encrypt()
4585 completionStatus = cau3_lock_semaphore(base); in CAU3_CHACHA20_POLY1305_Encrypt()
4588 cau3_release_semaphore(base); in CAU3_CHACHA20_POLY1305_Encrypt()
4593 base->CC_R[17] = (uint32_t)handle->keySlot; /* key/iv slot */ in CAU3_CHACHA20_POLY1305_Encrypt()
4594 base->CC_R[18] = (uintptr_t)aad; /* AAD pointer */ in CAU3_CHACHA20_POLY1305_Encrypt()
4595 base->CC_R[19] = aadLen; /* AAD length (bytes) */ in CAU3_CHACHA20_POLY1305_Encrypt()
4596 base->CC_R[20] = (uintptr_t)plaintext; /* Plaintext pointer */ in CAU3_CHACHA20_POLY1305_Encrypt()
4597 base->CC_R[21] = size; /* Plaintext length */ in CAU3_CHACHA20_POLY1305_Encrypt()
4598 base->CC_R[22] = (uintptr_t)ciphertext; /* Ciphertext pointer */ in CAU3_CHACHA20_POLY1305_Encrypt()
4599 base->CC_R[23] = (uintptr_t)tag; /* Tag pointer */ in CAU3_CHACHA20_POLY1305_Encrypt()
4600 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_CHACHA20_POLY1305_Encrypt()
4601 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_CHACHA20_POLY1305_Encrypt()
4602 base->CC_PC = CAU3_TASK_CHA_POLY_ENCRYPT; /* ChaChaPoly encrypt vector */ in CAU3_CHACHA20_POLY1305_Encrypt()
4603 base->CC_CMD = (uint32_t)handle->taskDone; /* trigger cau3 execution */ in CAU3_CHACHA20_POLY1305_Encrypt()
4606 completionStatus = cau3_process_task_completion(base, handle->taskDone); in CAU3_CHACHA20_POLY1305_Encrypt()
4608 cau3_release_semaphore(base); in CAU3_CHACHA20_POLY1305_Encrypt()
4634 status_t CAU3_CHACHA20_POLY1305_Decrypt(CAU3_Type *base, in CAU3_CHACHA20_POLY1305_Decrypt() argument
4646 completionStatus = cau3_load_nonce(base, nonce, handle->keySlot); in CAU3_CHACHA20_POLY1305_Decrypt()
4653 completionStatus = cau3_lock_semaphore(base); in CAU3_CHACHA20_POLY1305_Decrypt()
4656 cau3_release_semaphore(base); in CAU3_CHACHA20_POLY1305_Decrypt()
4661 base->CC_R[17] = (uint32_t)handle->keySlot; /* key/iv slot */ in CAU3_CHACHA20_POLY1305_Decrypt()
4662 base->CC_R[18] = (uintptr_t)aad; /* AAD pointer */ in CAU3_CHACHA20_POLY1305_Decrypt()
4663 base->CC_R[19] = aadLen; /* AAD length (bytes) */ in CAU3_CHACHA20_POLY1305_Decrypt()
4664 base->CC_R[20] = (uintptr_t)ciphertext; /* Ciphertext pointer */ in CAU3_CHACHA20_POLY1305_Decrypt()
4665 base->CC_R[21] = size; /* Cyphertext length */ in CAU3_CHACHA20_POLY1305_Decrypt()
4666 base->CC_R[22] = (uintptr_t)plaintext; /* Plaintext pointer */ in CAU3_CHACHA20_POLY1305_Decrypt()
4667 base->CC_R[23] = (uintptr_t)tag; /* Tag pointer */ in CAU3_CHACHA20_POLY1305_Decrypt()
4668 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_CHACHA20_POLY1305_Decrypt()
4669 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_CHACHA20_POLY1305_Decrypt()
4670 base->CC_PC = CAU3_TASK_CHA_POLY_DECRYPT; /* ChaChaPoly decrypt vector */ in CAU3_CHACHA20_POLY1305_Decrypt()
4671 base->CC_CMD = (uint32_t)handle->taskDone; /* trigger cau3 execution */ in CAU3_CHACHA20_POLY1305_Decrypt()
4674 completionStatus = cau3_process_task_completion(base, handle->taskDone); in CAU3_CHACHA20_POLY1305_Decrypt()
4676 cau3_release_semaphore(base); in CAU3_CHACHA20_POLY1305_Decrypt()
4719 status_t CAU3_KeyBlobUnwrap(CAU3_Type *base, in CAU3_KeyBlobUnwrap() argument
4734 completionStatus = cau3_lock_semaphore(base); in CAU3_KeyBlobUnwrap()
4737 cau3_release_semaphore(base); in CAU3_KeyBlobUnwrap()
4745 base->CC_R[16] = (uintptr_t)keyBlob; /* pKeyBlob */ in CAU3_KeyBlobUnwrap()
4746 base->CC_R[17] = (uint32_t)keySlot; /* keySlot */ in CAU3_KeyBlobUnwrap()
4747 base->CC_R[18] = numberOfBlocks; /* numberOfBlocks */ in CAU3_KeyBlobUnwrap()
4748 base->CC_R[19] = (uint32_t)dstContext; /* destination key context */ in CAU3_KeyBlobUnwrap()
4749 base->CC_R30 = CAU3_DMEM_STK_BASE; /* initialize stack pointer (sp) */ in CAU3_KeyBlobUnwrap()
4750 base->CC_R31 = 0U; /* set LR = 0 to signal a host task */ in CAU3_KeyBlobUnwrap()
4751 base->CC_PC = CAU3_TASK_KEY_BLOB_UNWRAP; /* call cau_key_blob_unwrap() */ in CAU3_KeyBlobUnwrap()
4752 base->CC_CMD = (uint32_t)taskDone; /* trigger cau3 execution */ in CAU3_KeyBlobUnwrap()
4755 completionStatus = cau3_process_task_completion(base, taskDone); in CAU3_KeyBlobUnwrap()
4757 cau3_release_semaphore(base); in CAU3_KeyBlobUnwrap()