Lines Matching refs:operation

38 TEE_Result TEE_AllocateOperation(TEE_OperationHandle *operation,  in TEE_AllocateOperation()  argument
50 if (!operation) in TEE_AllocateOperation()
396 *operation = op; in TEE_AllocateOperation()
418 void TEE_FreeOperation(TEE_OperationHandle operation) in TEE_FreeOperation() argument
422 if (operation == TEE_HANDLE_NULL) in TEE_FreeOperation()
430 res = _utee_cryp_state_free(operation->state); in TEE_FreeOperation()
434 TEE_Free(operation->buffer); in TEE_FreeOperation()
435 TEE_Free(operation); in TEE_FreeOperation()
438 void __GP11_TEE_FreeOperation(TEE_OperationHandle operation) in __GP11_TEE_FreeOperation() argument
440 if (operation == TEE_HANDLE_NULL) in __GP11_TEE_FreeOperation()
442 TEE_FreeOperation(operation); in __GP11_TEE_FreeOperation()
445 void TEE_GetOperationInfo(TEE_OperationHandle operation, in TEE_GetOperationInfo() argument
448 if (operation == TEE_HANDLE_NULL) in TEE_GetOperationInfo()
453 *operationInfo = operation->info; in TEE_GetOperationInfo()
549 __GP11_TEE_GetOperationInfoMultiple(TEE_OperationHandle operation, in __GP11_TEE_GetOperationInfoMultiple() argument
558 res = TEE_GetOperationInfoMultiple(operation, info, &s); in __GP11_TEE_GetOperationInfoMultiple()
578 void TEE_ResetOperation(TEE_OperationHandle operation) in TEE_ResetOperation() argument
580 if (operation == TEE_HANDLE_NULL) in TEE_ResetOperation()
583 if (!(operation->info.handleState & TEE_HANDLE_FLAG_KEY_SET)) in TEE_ResetOperation()
586 reset_operation_state(operation); in TEE_ResetOperation()
589 static TEE_Result set_operation_key(TEE_OperationHandle operation, in set_operation_key() argument
596 assert(operation); in set_operation_key()
600 TEE_ResetTransientObject(operation->key1); in set_operation_key()
601 operation->info.handleState &= ~TEE_HANDLE_FLAG_KEY_SET; in set_operation_key()
602 if (operation->operationState != TEE_OPERATION_STATE_INITIAL) in set_operation_key()
603 reset_operation_state(operation); in set_operation_key()
608 if (operation->info.operationClass == TEE_OPERATION_DIGEST) { in set_operation_key()
614 if ((operation->info.handleState & TEE_HANDLE_FLAG_EXPECT_TWO_KEYS) != in set_operation_key()
626 if ((key_info.objectUsage & operation->info.requiredKeyUsage) != in set_operation_key()
627 operation->info.requiredKeyUsage) { in set_operation_key()
632 if (operation->info.maxKeySize < key_info.objectSize) { in set_operation_key()
639 TEE_ResetTransientObject(operation->key1); in set_operation_key()
640 operation->info.handleState &= ~TEE_HANDLE_FLAG_KEY_SET; in set_operation_key()
642 res = TEE_CopyObjectAttributes1(operation->key1, key); in set_operation_key()
646 operation->info.handleState |= TEE_HANDLE_FLAG_KEY_SET; in set_operation_key()
648 operation->info.keySize = key_size; in set_operation_key()
650 if (operation->operationState != TEE_OPERATION_STATE_INITIAL) in set_operation_key()
651 reset_operation_state(operation); in set_operation_key()
662 TEE_Result TEE_SetOperationKey(TEE_OperationHandle operation, in TEE_SetOperationKey() argument
665 if (operation == TEE_HANDLE_NULL || in TEE_SetOperationKey()
666 operation->info.handleState & TEE_HANDLE_FLAG_INITIALIZED) in TEE_SetOperationKey()
669 return set_operation_key(operation, key); in TEE_SetOperationKey()
672 TEE_Result __GP11_TEE_SetOperationKey(TEE_OperationHandle operation, in __GP11_TEE_SetOperationKey() argument
675 if (operation == TEE_HANDLE_NULL || in __GP11_TEE_SetOperationKey()
676 operation->operationState != TEE_OPERATION_STATE_INITIAL) in __GP11_TEE_SetOperationKey()
679 return set_operation_key(operation, key); in __GP11_TEE_SetOperationKey()
682 static TEE_Result set_operation_key2(TEE_OperationHandle operation, in set_operation_key2() argument
691 assert(operation); in set_operation_key2()
699 TEE_ResetTransientObject(operation->key1); in set_operation_key2()
700 TEE_ResetTransientObject(operation->key2); in set_operation_key2()
701 operation->info.handleState &= ~TEE_HANDLE_FLAG_KEY_SET; in set_operation_key2()
702 if (operation->operationState != TEE_OPERATION_STATE_INITIAL) in set_operation_key2()
703 reset_operation_state(operation); in set_operation_key2()
712 if (operation->info.operationClass == TEE_OPERATION_DIGEST) { in set_operation_key2()
718 if ((operation->info.handleState & TEE_HANDLE_FLAG_EXPECT_TWO_KEYS) == in set_operation_key2()
730 if ((key_info1.objectUsage & operation->info. in set_operation_key2()
731 requiredKeyUsage) != operation->info.requiredKeyUsage) { in set_operation_key2()
745 if ((key_info2.objectUsage & operation->info. in set_operation_key2()
746 requiredKeyUsage) != operation->info.requiredKeyUsage) { in set_operation_key2()
761 if (operation->info.maxKeySize < key_info1.objectSize) { in set_operation_key2()
772 TEE_ResetTransientObject(operation->key1); in set_operation_key2()
773 TEE_ResetTransientObject(operation->key2); in set_operation_key2()
774 operation->info.handleState &= ~TEE_HANDLE_FLAG_KEY_SET; in set_operation_key2()
776 res = TEE_CopyObjectAttributes1(operation->key1, key1); in set_operation_key2()
779 res = TEE_CopyObjectAttributes1(operation->key2, key2); in set_operation_key2()
786 operation->info.handleState |= TEE_HANDLE_FLAG_KEY_SET; in set_operation_key2()
788 operation->info.keySize = key_size; in set_operation_key2()
790 if (operation->operationState != TEE_OPERATION_STATE_INITIAL) in set_operation_key2()
791 reset_operation_state(operation); in set_operation_key2()
803 TEE_Result __GP11_TEE_SetOperationKey2(TEE_OperationHandle operation, in __GP11_TEE_SetOperationKey2() argument
807 if (operation == TEE_HANDLE_NULL || in __GP11_TEE_SetOperationKey2()
808 operation->operationState != TEE_OPERATION_STATE_INITIAL) in __GP11_TEE_SetOperationKey2()
811 return set_operation_key2(operation, key1, key2); in __GP11_TEE_SetOperationKey2()
814 TEE_Result TEE_SetOperationKey2(TEE_OperationHandle operation, in TEE_SetOperationKey2() argument
817 if (operation != TEE_HANDLE_NULL && key1 && key1 == key2) in TEE_SetOperationKey2()
820 return __GP11_TEE_SetOperationKey2(operation, key1, key2); in TEE_SetOperationKey2()
884 static void init_hash_operation(TEE_OperationHandle operation, const void *IV, in init_hash_operation() argument
893 res = _utee_hash_init(operation->state, IV, IVLen); in init_hash_operation()
896 operation->buffer_offs = 0; in init_hash_operation()
897 operation->info.handleState |= TEE_HANDLE_FLAG_INITIALIZED; in init_hash_operation()
900 void TEE_DigestUpdate(TEE_OperationHandle operation, in TEE_DigestUpdate() argument
905 if (operation == TEE_HANDLE_NULL || in TEE_DigestUpdate()
906 operation->info.operationClass != TEE_OPERATION_DIGEST) in TEE_DigestUpdate()
909 operation->operationState = TEE_OPERATION_STATE_ACTIVE; in TEE_DigestUpdate()
911 res = _utee_hash_update(operation->state, chunk, chunkSize); in TEE_DigestUpdate()
916 void __GP11_TEE_DigestUpdate(TEE_OperationHandle operation, in __GP11_TEE_DigestUpdate() argument
919 return TEE_DigestUpdate(operation, chunk, chunkSize); in __GP11_TEE_DigestUpdate()
922 TEE_Result TEE_DigestDoFinal(TEE_OperationHandle operation, const void *chunk, in TEE_DigestDoFinal() argument
929 if ((operation == TEE_HANDLE_NULL) || in TEE_DigestDoFinal()
931 (operation->info.operationClass != TEE_OPERATION_DIGEST)) { in TEE_DigestDoFinal()
935 if (operation->operationState == TEE_OPERATION_STATE_EXTRACTING && in TEE_DigestDoFinal()
942 if (operation->operationState == TEE_OPERATION_STATE_EXTRACTING && in TEE_DigestDoFinal()
943 operation->buffer) { in TEE_DigestDoFinal()
948 len = MIN(operation->block_size - operation->buffer_offs, in TEE_DigestDoFinal()
950 memcpy(hash, operation->buffer + operation->buffer_offs, len); in TEE_DigestDoFinal()
954 res = _utee_hash_final(operation->state, chunk, chunkLen, hash, in TEE_DigestDoFinal()
962 init_hash_operation(operation, NULL, 0); in TEE_DigestDoFinal()
964 operation->operationState = TEE_OPERATION_STATE_INITIAL; in TEE_DigestDoFinal()
974 TEE_Result __GP11_TEE_DigestDoFinal(TEE_OperationHandle operation, in __GP11_TEE_DigestDoFinal() argument
983 res = TEE_DigestDoFinal(operation, chunk, chunkLen, hash, &l); in __GP11_TEE_DigestDoFinal()
988 TEE_Result TEE_DigestExtract(TEE_OperationHandle operation, void *hash, in TEE_DigestExtract() argument
995 if (operation == TEE_HANDLE_NULL || in TEE_DigestExtract()
996 operation->info.operationClass != TEE_OPERATION_DIGEST) in TEE_DigestExtract()
1000 if (!operation->buffer) { in TEE_DigestExtract()
1002 operation->info.handleState |= TEE_HANDLE_FLAG_EXTRACTING; in TEE_DigestExtract()
1003 operation->operationState = TEE_OPERATION_STATE_EXTRACTING; in TEE_DigestExtract()
1005 res = _utee_hash_final(operation->state, NULL, 0, hash, &hl); in TEE_DigestExtract()
1013 if (operation->operationState != TEE_OPERATION_STATE_EXTRACTING) { in TEE_DigestExtract()
1014 hl = operation->block_size; in TEE_DigestExtract()
1015 res = _utee_hash_final(operation->state, NULL, 0, in TEE_DigestExtract()
1016 operation->buffer, &hl); in TEE_DigestExtract()
1019 if (hl != operation->block_size) in TEE_DigestExtract()
1021 assert(!operation->buffer_offs); in TEE_DigestExtract()
1022 operation->info.handleState |= TEE_HANDLE_FLAG_EXTRACTING; in TEE_DigestExtract()
1023 operation->operationState = TEE_OPERATION_STATE_EXTRACTING; in TEE_DigestExtract()
1026 len = MIN(operation->block_size - operation->buffer_offs, *hashLen); in TEE_DigestExtract()
1027 memcpy(hash, operation->buffer + operation->buffer_offs, len); in TEE_DigestExtract()
1029 operation->buffer_offs += len; in TEE_DigestExtract()
1036 void TEE_CipherInit(TEE_OperationHandle operation, const void *IV, in TEE_CipherInit() argument
1041 if (operation == TEE_HANDLE_NULL) in TEE_CipherInit()
1044 if (operation->info.operationClass != TEE_OPERATION_CIPHER) in TEE_CipherInit()
1047 if (!(operation->info.handleState & TEE_HANDLE_FLAG_KEY_SET) || in TEE_CipherInit()
1048 !(operation->key1)) in TEE_CipherInit()
1051 if (operation->operationState != TEE_OPERATION_STATE_INITIAL) in TEE_CipherInit()
1052 TEE_ResetOperation(operation); in TEE_CipherInit()
1055 if (operation->info.algorithm == TEE_ALG_AES_ECB_NOPAD || in TEE_CipherInit()
1056 operation->info.algorithm == TEE_ALG_DES_ECB_NOPAD || in TEE_CipherInit()
1057 operation->info.algorithm == TEE_ALG_DES3_ECB_NOPAD || in TEE_CipherInit()
1058 operation->info.algorithm == TEE_ALG_SM4_ECB_NOPAD) in TEE_CipherInit()
1062 operation->operationState = TEE_OPERATION_STATE_ACTIVE; in TEE_CipherInit()
1064 res = _utee_cipher_init(operation->state, IV, IVLen); in TEE_CipherInit()
1068 operation->buffer_offs = 0; in TEE_CipherInit()
1069 operation->info.handleState |= TEE_HANDLE_FLAG_INITIALIZED; in TEE_CipherInit()
1072 void __GP11_TEE_CipherInit(TEE_OperationHandle operation, const void *IV, in __GP11_TEE_CipherInit() argument
1075 return TEE_CipherInit(operation, IV, IVLen); in __GP11_TEE_CipherInit()
1182 TEE_Result TEE_CipherUpdate(TEE_OperationHandle operation, const void *srcData, in TEE_CipherUpdate() argument
1189 if (operation == TEE_HANDLE_NULL || (!srcData && srcLen)) { in TEE_CipherUpdate()
1195 if (operation->info.operationClass != TEE_OPERATION_CIPHER) { in TEE_CipherUpdate()
1200 if ((operation->info.handleState & TEE_HANDLE_FLAG_INITIALIZED) == 0) { in TEE_CipherUpdate()
1205 if (operation->operationState != TEE_OPERATION_STATE_ACTIVE) { in TEE_CipherUpdate()
1217 if (operation->block_size > 1) { in TEE_CipherUpdate()
1218 req_dlen = ((operation->buffer_offs + srcLen) / in TEE_CipherUpdate()
1219 operation->block_size) * operation->block_size; in TEE_CipherUpdate()
1223 if (operation->buffer_two_blocks) { in TEE_CipherUpdate()
1224 if (operation->buffer_offs + srcLen > in TEE_CipherUpdate()
1225 operation->block_size * 2) { in TEE_CipherUpdate()
1226 req_dlen = operation->buffer_offs + srcLen - in TEE_CipherUpdate()
1227 operation->block_size * 2; in TEE_CipherUpdate()
1228 req_dlen = ROUNDUP2(req_dlen, operation->block_size); in TEE_CipherUpdate()
1245 if (operation->block_size > 1) { in TEE_CipherUpdate()
1246 res = tee_buffer_update(operation, _utee_cipher_update, srcData, in TEE_CipherUpdate()
1250 res = _utee_cipher_update(operation->state, srcData, in TEE_CipherUpdate()
1267 TEE_Result __GP11_TEE_CipherUpdate(TEE_OperationHandle operation, in __GP11_TEE_CipherUpdate() argument
1276 res = TEE_CipherUpdate(operation, srcData, srcLen, destData, &dl); in __GP11_TEE_CipherUpdate()
1281 TEE_Result TEE_CipherDoFinal(TEE_OperationHandle operation, in TEE_CipherDoFinal() argument
1291 if (operation == TEE_HANDLE_NULL || (!srcData && srcLen)) { in TEE_CipherDoFinal()
1298 if (operation->info.operationClass != TEE_OPERATION_CIPHER) { in TEE_CipherDoFinal()
1303 if ((operation->info.handleState & TEE_HANDLE_FLAG_INITIALIZED) == 0) { in TEE_CipherDoFinal()
1308 if (operation->operationState != TEE_OPERATION_STATE_ACTIVE) { in TEE_CipherDoFinal()
1317 if (operation->info.algorithm == TEE_ALG_AES_ECB_NOPAD || in TEE_CipherDoFinal()
1318 operation->info.algorithm == TEE_ALG_AES_CBC_NOPAD || in TEE_CipherDoFinal()
1319 operation->info.algorithm == TEE_ALG_DES_ECB_NOPAD || in TEE_CipherDoFinal()
1320 operation->info.algorithm == TEE_ALG_DES_CBC_NOPAD || in TEE_CipherDoFinal()
1321 operation->info.algorithm == TEE_ALG_DES3_ECB_NOPAD || in TEE_CipherDoFinal()
1322 operation->info.algorithm == TEE_ALG_DES3_CBC_NOPAD || in TEE_CipherDoFinal()
1323 operation->info.algorithm == TEE_ALG_SM4_ECB_NOPAD || in TEE_CipherDoFinal()
1324 operation->info.algorithm == TEE_ALG_SM4_CBC_NOPAD) { in TEE_CipherDoFinal()
1325 if (((operation->buffer_offs + srcLen) % operation->block_size) in TEE_CipherDoFinal()
1337 if (operation->block_size > 1) { in TEE_CipherDoFinal()
1338 req_dlen = operation->buffer_offs + srcLen; in TEE_CipherDoFinal()
1351 if (operation->block_size > 1) { in TEE_CipherDoFinal()
1353 res = tee_buffer_update(operation, _utee_cipher_update, in TEE_CipherDoFinal()
1364 res = _utee_cipher_final(operation->state, operation->buffer, in TEE_CipherDoFinal()
1365 operation->buffer_offs, dst, in TEE_CipherDoFinal()
1368 res = _utee_cipher_final(operation->state, srcData, srcLen, dst, in TEE_CipherDoFinal()
1378 operation->info.handleState &= ~TEE_HANDLE_FLAG_INITIALIZED; in TEE_CipherDoFinal()
1380 operation->operationState = TEE_OPERATION_STATE_INITIAL; in TEE_CipherDoFinal()
1390 TEE_Result __GP11_TEE_CipherDoFinal(TEE_OperationHandle operation, in __GP11_TEE_CipherDoFinal() argument
1401 res = TEE_CipherDoFinal(operation, srcData, srcLen, destData, &dl); in __GP11_TEE_CipherDoFinal()
1409 void TEE_MACInit(TEE_OperationHandle operation, const void *IV, size_t IVLen) in TEE_MACInit() argument
1411 if (operation == TEE_HANDLE_NULL) in TEE_MACInit()
1414 if (operation->info.operationClass != TEE_OPERATION_MAC) in TEE_MACInit()
1417 if (!(operation->info.handleState & TEE_HANDLE_FLAG_KEY_SET) || in TEE_MACInit()
1418 !(operation->key1)) in TEE_MACInit()
1421 if (operation->operationState != TEE_OPERATION_STATE_INITIAL) in TEE_MACInit()
1422 TEE_ResetOperation(operation); in TEE_MACInit()
1424 operation->operationState = TEE_OPERATION_STATE_ACTIVE; in TEE_MACInit()
1426 init_hash_operation(operation, IV, IVLen); in TEE_MACInit()
1429 void __GP11_TEE_MACInit(TEE_OperationHandle operation, const void *IV, in __GP11_TEE_MACInit() argument
1432 return TEE_MACInit(operation, IV, IVLen); in __GP11_TEE_MACInit()
1435 void TEE_MACUpdate(TEE_OperationHandle operation, const void *chunk, in TEE_MACUpdate() argument
1440 if (operation == TEE_HANDLE_NULL || (chunk == NULL && chunkSize != 0)) in TEE_MACUpdate()
1443 if (operation->info.operationClass != TEE_OPERATION_MAC) in TEE_MACUpdate()
1446 if ((operation->info.handleState & TEE_HANDLE_FLAG_INITIALIZED) == 0) in TEE_MACUpdate()
1449 if (operation->operationState != TEE_OPERATION_STATE_ACTIVE) in TEE_MACUpdate()
1452 res = _utee_hash_update(operation->state, chunk, chunkSize); in TEE_MACUpdate()
1457 void __GP11_TEE_MACUpdate(TEE_OperationHandle operation, const void *chunk, in __GP11_TEE_MACUpdate() argument
1460 return TEE_MACUpdate(operation, chunk, chunkSize); in __GP11_TEE_MACUpdate()
1463 TEE_Result TEE_MACComputeFinal(TEE_OperationHandle operation, in TEE_MACComputeFinal() argument
1470 if (operation == TEE_HANDLE_NULL || (!message && messageLen)) { in TEE_MACComputeFinal()
1476 if (operation->info.operationClass != TEE_OPERATION_MAC) { in TEE_MACComputeFinal()
1481 if ((operation->info.handleState & TEE_HANDLE_FLAG_INITIALIZED) == 0) { in TEE_MACComputeFinal()
1486 if (operation->operationState != TEE_OPERATION_STATE_ACTIVE) { in TEE_MACComputeFinal()
1492 res = _utee_hash_final(operation->state, message, messageLen, mac, &ml); in TEE_MACComputeFinal()
1497 operation->info.handleState &= ~TEE_HANDLE_FLAG_INITIALIZED; in TEE_MACComputeFinal()
1499 operation->operationState = TEE_OPERATION_STATE_INITIAL; in TEE_MACComputeFinal()
1509 TEE_Result __GP11_TEE_MACComputeFinal(TEE_OperationHandle operation, in __GP11_TEE_MACComputeFinal() argument
1518 res = TEE_MACComputeFinal(operation, message, messageLen, mac, &ml); in __GP11_TEE_MACComputeFinal()
1523 TEE_Result TEE_MACCompareFinal(TEE_OperationHandle operation, in TEE_MACCompareFinal() argument
1531 if (operation->info.operationClass != TEE_OPERATION_MAC) { in TEE_MACCompareFinal()
1536 if ((operation->info.handleState & TEE_HANDLE_FLAG_INITIALIZED) == 0) { in TEE_MACCompareFinal()
1541 if (operation->operationState != TEE_OPERATION_STATE_ACTIVE) { in TEE_MACCompareFinal()
1546 res = TEE_MACComputeFinal(operation, message, messageLen, computed_mac, in TEE_MACCompareFinal()
1561 operation->operationState = TEE_OPERATION_STATE_INITIAL; in TEE_MACCompareFinal()
1571 TEE_Result __GP11_TEE_MACCompareFinal(TEE_OperationHandle operation, in __GP11_TEE_MACCompareFinal() argument
1575 return TEE_MACCompareFinal(operation, message, messageLen, mac, macLen); in __GP11_TEE_MACCompareFinal()
1580 TEE_Result TEE_AEInit(TEE_OperationHandle operation, const void *nonce, in TEE_AEInit() argument
1586 if (operation == TEE_HANDLE_NULL || nonce == NULL) { in TEE_AEInit()
1591 if (operation->info.operationClass != TEE_OPERATION_AE) { in TEE_AEInit()
1596 if (operation->operationState != TEE_OPERATION_STATE_INITIAL) { in TEE_AEInit()
1607 if (operation->info.algorithm == TEE_ALG_AES_GCM) { in TEE_AEInit()
1617 res = _utee_authenc_init(operation->state, nonce, nonceLen, tagLen / 8, in TEE_AEInit()
1622 operation->info.digestLength = tagLen / 8; in TEE_AEInit()
1623 operation->buffer_offs = 0; in TEE_AEInit()
1624 operation->info.handleState |= TEE_HANDLE_FLAG_INITIALIZED; in TEE_AEInit()
1634 TEE_Result __GP11_TEE_AEInit(TEE_OperationHandle operation, const void *nonce, in __GP11_TEE_AEInit() argument
1638 return TEE_AEInit(operation, nonce, nonceLen, tagLen, AADLen, in __GP11_TEE_AEInit()
1642 void TEE_AEUpdateAAD(TEE_OperationHandle operation, const void *AADdata, in TEE_AEUpdateAAD() argument
1647 if (operation == TEE_HANDLE_NULL || (!AADdata && AADdataLen)) in TEE_AEUpdateAAD()
1650 if (operation->info.operationClass != TEE_OPERATION_AE) in TEE_AEUpdateAAD()
1653 if (operation->operationState != TEE_OPERATION_STATE_INITIAL) in TEE_AEUpdateAAD()
1656 if ((operation->info.handleState & TEE_HANDLE_FLAG_INITIALIZED) == 0) in TEE_AEUpdateAAD()
1659 res = _utee_authenc_update_aad(operation->state, AADdata, AADdataLen); in TEE_AEUpdateAAD()
1664 void __GP11_TEE_AEUpdateAAD(TEE_OperationHandle operation, const void *AADdata, in __GP11_TEE_AEUpdateAAD() argument
1669 if (operation == TEE_HANDLE_NULL || in __GP11_TEE_AEUpdateAAD()
1673 if (operation->info.operationClass != TEE_OPERATION_AE) in __GP11_TEE_AEUpdateAAD()
1676 if ((operation->info.handleState & TEE_HANDLE_FLAG_INITIALIZED) == 0) in __GP11_TEE_AEUpdateAAD()
1679 res = _utee_authenc_update_aad(operation->state, AADdata, AADdataLen); in __GP11_TEE_AEUpdateAAD()
1681 operation->operationState = TEE_OPERATION_STATE_ACTIVE; in __GP11_TEE_AEUpdateAAD()
1687 static TEE_Result ae_update_helper(TEE_OperationHandle operation, in ae_update_helper() argument
1705 if (operation->block_size > 1) { in ae_update_helper()
1706 req_dlen = ROUNDDOWN2(operation->buffer_offs + slen, in ae_update_helper()
1707 operation->block_size); in ae_update_helper()
1718 if (operation->block_size > 1) { in ae_update_helper()
1719 res = tee_buffer_update(operation, _utee_authenc_update_payload, in ae_update_helper()
1723 res = _utee_authenc_update_payload(operation->state, in ae_update_helper()
1737 TEE_Result TEE_AEUpdate(TEE_OperationHandle operation, const void *srcData, in TEE_AEUpdate() argument
1742 if (operation == TEE_HANDLE_NULL || (!srcData && srcLen)) { in TEE_AEUpdate()
1748 if (operation->info.operationClass != TEE_OPERATION_AE) { in TEE_AEUpdate()
1753 if ((operation->info.handleState & TEE_HANDLE_FLAG_INITIALIZED) == 0) { in TEE_AEUpdate()
1758 res = ae_update_helper(operation, srcData, srcLen, destData, destLen); in TEE_AEUpdate()
1760 operation->operationState = TEE_OPERATION_STATE_ACTIVE; in TEE_AEUpdate()
1770 TEE_Result __GP11_TEE_AEUpdate(TEE_OperationHandle operation, in __GP11_TEE_AEUpdate() argument
1777 if (operation == TEE_HANDLE_NULL || (!srcData && srcLen)) { in __GP11_TEE_AEUpdate()
1783 if (operation->info.operationClass != TEE_OPERATION_AE) { in __GP11_TEE_AEUpdate()
1788 if ((operation->info.handleState & TEE_HANDLE_FLAG_INITIALIZED) == 0) { in __GP11_TEE_AEUpdate()
1794 res = ae_update_helper(operation, srcData, srcLen, destData, &dl); in __GP11_TEE_AEUpdate()
1800 operation->operationState = TEE_OPERATION_STATE_ACTIVE; in __GP11_TEE_AEUpdate()
1810 TEE_Result TEE_AEEncryptFinal(TEE_OperationHandle operation, in TEE_AEEncryptFinal() argument
1822 if (operation == TEE_HANDLE_NULL || (!srcData && srcLen)) { in TEE_AEEncryptFinal()
1829 if (operation->info.operationClass != TEE_OPERATION_AE) { in TEE_AEEncryptFinal()
1834 if ((operation->info.handleState & TEE_HANDLE_FLAG_INITIALIZED) == 0) { in TEE_AEEncryptFinal()
1849 req_dlen = operation->buffer_offs + srcLen; in TEE_AEEncryptFinal()
1855 if (*tagLen < operation->info.digestLength) { in TEE_AEEncryptFinal()
1856 *tagLen = operation->info.digestLength; in TEE_AEEncryptFinal()
1865 if (operation->block_size > 1) { in TEE_AEEncryptFinal()
1866 res = tee_buffer_update(operation, _utee_authenc_update_payload, in TEE_AEEncryptFinal()
1875 res = _utee_authenc_enc_final(operation->state, in TEE_AEEncryptFinal()
1876 operation->buffer, in TEE_AEEncryptFinal()
1877 operation->buffer_offs, dst, in TEE_AEEncryptFinal()
1880 res = _utee_authenc_enc_final(operation->state, srcData, in TEE_AEEncryptFinal()
1891 operation->info.handleState &= ~TEE_HANDLE_FLAG_INITIALIZED; in TEE_AEEncryptFinal()
1893 operation->operationState = TEE_OPERATION_STATE_INITIAL; in TEE_AEEncryptFinal()
1903 TEE_Result __GP11_TEE_AEEncryptFinal(TEE_OperationHandle operation, in __GP11_TEE_AEEncryptFinal() argument
1916 res = TEE_AEEncryptFinal(operation, srcData, srcLen, destData, &dl, in __GP11_TEE_AEEncryptFinal()
1923 TEE_Result TEE_AEDecryptFinal(TEE_OperationHandle operation, in TEE_AEDecryptFinal() argument
1934 if (operation == TEE_HANDLE_NULL || (!srcData && srcLen)) { in TEE_AEDecryptFinal()
1940 if (operation->info.operationClass != TEE_OPERATION_AE) { in TEE_AEDecryptFinal()
1945 if ((operation->info.handleState & TEE_HANDLE_FLAG_INITIALIZED) == 0) { in TEE_AEDecryptFinal()
1955 req_dlen = operation->buffer_offs + srcLen; in TEE_AEDecryptFinal()
1963 if (operation->block_size > 1) { in TEE_AEDecryptFinal()
1964 res = tee_buffer_update(operation, _utee_authenc_update_payload, in TEE_AEDecryptFinal()
1973 res = _utee_authenc_dec_final(operation->state, in TEE_AEDecryptFinal()
1974 operation->buffer, in TEE_AEDecryptFinal()
1975 operation->buffer_offs, dst, in TEE_AEDecryptFinal()
1978 res = _utee_authenc_dec_final(operation->state, srcData, in TEE_AEDecryptFinal()
1986 if (tagLen != operation->info.digestLength) in TEE_AEDecryptFinal()
1992 operation->info.handleState &= ~TEE_HANDLE_FLAG_INITIALIZED; in TEE_AEDecryptFinal()
1994 operation->operationState = TEE_OPERATION_STATE_INITIAL; in TEE_AEDecryptFinal()
2005 TEE_Result __GP11_TEE_AEDecryptFinal(TEE_OperationHandle operation, in __GP11_TEE_AEDecryptFinal() argument
2015 res = TEE_AEDecryptFinal(operation, srcData, srcLen, destData, &dl, in __GP11_TEE_AEDecryptFinal()
2023 TEE_Result TEE_AsymmetricEncrypt(TEE_OperationHandle operation, in TEE_AsymmetricEncrypt() argument
2033 if (operation == TEE_HANDLE_NULL || (!srcData && srcLen)) in TEE_AsymmetricEncrypt()
2039 if (!operation->key1) in TEE_AsymmetricEncrypt()
2041 if (operation->info.operationClass != TEE_OPERATION_ASYMMETRIC_CIPHER) in TEE_AsymmetricEncrypt()
2043 if (operation->info.mode != TEE_MODE_ENCRYPT) in TEE_AsymmetricEncrypt()
2048 res = _utee_asymm_operate(operation->state, ua, paramCount, srcData, in TEE_AsymmetricEncrypt()
2062 TEE_Result __GP11_TEE_AsymmetricEncrypt(TEE_OperationHandle operation, in __GP11_TEE_AsymmetricEncrypt() argument
2072 if (operation == TEE_HANDLE_NULL || (!srcData && srcLen)) in __GP11_TEE_AsymmetricEncrypt()
2078 if (!operation->key1) in __GP11_TEE_AsymmetricEncrypt()
2080 if (operation->info.operationClass != TEE_OPERATION_ASYMMETRIC_CIPHER) in __GP11_TEE_AsymmetricEncrypt()
2082 if (operation->info.mode != TEE_MODE_ENCRYPT) in __GP11_TEE_AsymmetricEncrypt()
2087 res = _utee_asymm_operate(operation->state, ua, paramCount, srcData, in __GP11_TEE_AsymmetricEncrypt()
2099 TEE_Result TEE_AsymmetricDecrypt(TEE_OperationHandle operation, in TEE_AsymmetricDecrypt() argument
2109 if (operation == TEE_HANDLE_NULL || (!srcData && srcLen)) in TEE_AsymmetricDecrypt()
2115 if (!operation->key1) in TEE_AsymmetricDecrypt()
2117 if (operation->info.operationClass != TEE_OPERATION_ASYMMETRIC_CIPHER) in TEE_AsymmetricDecrypt()
2119 if (operation->info.mode != TEE_MODE_DECRYPT) in TEE_AsymmetricDecrypt()
2124 res = _utee_asymm_operate(operation->state, ua, paramCount, srcData, in TEE_AsymmetricDecrypt()
2138 TEE_Result __GP11_TEE_AsymmetricDecrypt(TEE_OperationHandle operation, in __GP11_TEE_AsymmetricDecrypt() argument
2148 if (operation == TEE_HANDLE_NULL || (!srcData && srcLen)) in __GP11_TEE_AsymmetricDecrypt()
2154 if (!operation->key1) in __GP11_TEE_AsymmetricDecrypt()
2156 if (operation->info.operationClass != TEE_OPERATION_ASYMMETRIC_CIPHER) in __GP11_TEE_AsymmetricDecrypt()
2158 if (operation->info.mode != TEE_MODE_DECRYPT) in __GP11_TEE_AsymmetricDecrypt()
2163 res = _utee_asymm_operate(operation->state, ua, paramCount, srcData, in __GP11_TEE_AsymmetricDecrypt()
2175 TEE_Result TEE_AsymmetricSignDigest(TEE_OperationHandle operation, in TEE_AsymmetricSignDigest() argument
2185 if (operation == TEE_HANDLE_NULL || (!digest && digestLen)) in TEE_AsymmetricSignDigest()
2191 if (!operation->key1) in TEE_AsymmetricSignDigest()
2193 if (operation->info.operationClass != in TEE_AsymmetricSignDigest()
2196 if (operation->info.mode != TEE_MODE_SIGN) in TEE_AsymmetricSignDigest()
2201 res = _utee_asymm_operate(operation->state, ua, paramCount, digest, in TEE_AsymmetricSignDigest()
2211 TEE_Result __GP11_TEE_AsymmetricSignDigest(TEE_OperationHandle operation, in __GP11_TEE_AsymmetricSignDigest() argument
2222 if (operation == TEE_HANDLE_NULL || (!digest && digestLen)) in __GP11_TEE_AsymmetricSignDigest()
2228 if (!operation->key1) in __GP11_TEE_AsymmetricSignDigest()
2230 if (operation->info.operationClass != in __GP11_TEE_AsymmetricSignDigest()
2233 if (operation->info.mode != TEE_MODE_SIGN) in __GP11_TEE_AsymmetricSignDigest()
2238 res = _utee_asymm_operate(operation->state, ua, paramCount, digest, in __GP11_TEE_AsymmetricSignDigest()
2248 TEE_Result TEE_AsymmetricVerifyDigest(TEE_OperationHandle operation, in TEE_AsymmetricVerifyDigest() argument
2258 if (operation == TEE_HANDLE_NULL || in TEE_AsymmetricVerifyDigest()
2265 if (!operation->key1) in TEE_AsymmetricVerifyDigest()
2267 if (operation->info.operationClass != in TEE_AsymmetricVerifyDigest()
2270 if (operation->info.mode != TEE_MODE_VERIFY) in TEE_AsymmetricVerifyDigest()
2274 res = _utee_asymm_verify(operation->state, ua, paramCount, digest, in TEE_AsymmetricVerifyDigest()
2283 TEE_Result __GP11_TEE_AsymmetricVerifyDigest(TEE_OperationHandle operation, in __GP11_TEE_AsymmetricVerifyDigest() argument
2294 if (operation == TEE_HANDLE_NULL || (!digest && digestLen) || in __GP11_TEE_AsymmetricVerifyDigest()
2300 if (!operation->key1) in __GP11_TEE_AsymmetricVerifyDigest()
2302 if (operation->info.operationClass != in __GP11_TEE_AsymmetricVerifyDigest()
2305 if (operation->info.mode != TEE_MODE_VERIFY) in __GP11_TEE_AsymmetricVerifyDigest()
2309 res = _utee_asymm_verify(operation->state, ua, paramCount, digest, in __GP11_TEE_AsymmetricVerifyDigest()
2320 void TEE_DeriveKey(TEE_OperationHandle operation, in TEE_DeriveKey() argument
2328 if (operation == TEE_HANDLE_NULL || derivedKey == 0) in TEE_DeriveKey()
2333 if (TEE_ALG_GET_CLASS(operation->info.algorithm) != in TEE_DeriveKey()
2337 if (operation->info.operationClass != TEE_OPERATION_KEY_DERIVATION) in TEE_DeriveKey()
2339 if (!operation->key1) in TEE_DeriveKey()
2341 if (operation->info.mode != TEE_MODE_DERIVE) in TEE_DeriveKey()
2343 if ((operation->info.handleState & TEE_HANDLE_FLAG_KEY_SET) == 0) in TEE_DeriveKey()
2356 res = _utee_cryp_derive_key(operation->state, ua, paramCount, in TEE_DeriveKey()
2362 void __GP11_TEE_DeriveKey(TEE_OperationHandle operation, in __GP11_TEE_DeriveKey() argument
2370 if (operation == TEE_HANDLE_NULL || derivedKey == 0) in __GP11_TEE_DeriveKey()
2375 if (TEE_ALG_GET_CLASS(operation->info.algorithm) != in __GP11_TEE_DeriveKey()
2379 if (operation->info.operationClass != TEE_OPERATION_KEY_DERIVATION) in __GP11_TEE_DeriveKey()
2381 if (!operation->key1) in __GP11_TEE_DeriveKey()
2383 if (operation->info.mode != TEE_MODE_DERIVE) in __GP11_TEE_DeriveKey()
2385 if ((operation->info.handleState & TEE_HANDLE_FLAG_KEY_SET) == 0) in __GP11_TEE_DeriveKey()
2398 res = _utee_cryp_derive_key(operation->state, ua, paramCount, in __GP11_TEE_DeriveKey()