17777dab0Sopenharmony_ci/* 27777dab0Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 37777dab0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 47777dab0Sopenharmony_ci * you may not use this file except in compliance with the License. 57777dab0Sopenharmony_ci * You may obtain a copy of the License at 67777dab0Sopenharmony_ci * 77777dab0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 87777dab0Sopenharmony_ci * 97777dab0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 107777dab0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 117777dab0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 127777dab0Sopenharmony_ci * See the License for the specific language governing permissions and 137777dab0Sopenharmony_ci * limitations under the License. 147777dab0Sopenharmony_ci */ 157777dab0Sopenharmony_ci 167777dab0Sopenharmony_ci#ifndef TEE_CRYPTO_API_H 177777dab0Sopenharmony_ci#define TEE_CRYPTO_API_H 187777dab0Sopenharmony_ci 197777dab0Sopenharmony_ci/** 207777dab0Sopenharmony_ci * @addtogroup TeeTrusted 217777dab0Sopenharmony_ci * @{ 227777dab0Sopenharmony_ci * 237777dab0Sopenharmony_ci * @brief TEE(Trusted Excution Environment) API. 247777dab0Sopenharmony_ci * Provides security capability APIs such as trusted storage, encryption and decryption, 257777dab0Sopenharmony_ci * and trusted time for trusted application development. 267777dab0Sopenharmony_ci * 277777dab0Sopenharmony_ci * @since 12 287777dab0Sopenharmony_ci */ 297777dab0Sopenharmony_ci 307777dab0Sopenharmony_ci/** 317777dab0Sopenharmony_ci * @file tee_crypto_api.h 327777dab0Sopenharmony_ci * 337777dab0Sopenharmony_ci * @brief Provides APIs for cryptographic operations. 347777dab0Sopenharmony_ci * 357777dab0Sopenharmony_ci * You can use these APIs to implement encryption and decryption. 367777dab0Sopenharmony_ci * 377777dab0Sopenharmony_ci * @library NA 387777dab0Sopenharmony_ci * @kit TEEKit 397777dab0Sopenharmony_ci * @syscap SystemCapability.Tee.TeeClient 407777dab0Sopenharmony_ci * @since 12 417777dab0Sopenharmony_ci * @version 1.0 427777dab0Sopenharmony_ci */ 437777dab0Sopenharmony_ci 447777dab0Sopenharmony_ci#include <pthread.h> /* pthread_mutex_t */ 457777dab0Sopenharmony_ci#include <tee_defines.h> 467777dab0Sopenharmony_ci#include <tee_mem_mgmt_api.h> 477777dab0Sopenharmony_ci 487777dab0Sopenharmony_ci#ifdef __cplusplus 497777dab0Sopenharmony_ciextern "C" { 507777dab0Sopenharmony_ci#endif 517777dab0Sopenharmony_ci 527777dab0Sopenharmony_ci#ifndef NULL 537777dab0Sopenharmony_ci/** 547777dab0Sopenharmony_ci * @brief Definition of <b>NULL</b>. 557777dab0Sopenharmony_ci * 567777dab0Sopenharmony_ci * @since 12 577777dab0Sopenharmony_ci */ 587777dab0Sopenharmony_ci#define NULL ((void *)0) 597777dab0Sopenharmony_ci#endif 607777dab0Sopenharmony_ci/** 617777dab0Sopenharmony_ci * @brief Defines the maximum key length, in bits. 627777dab0Sopenharmony_ci * 637777dab0Sopenharmony_ci * @since 12 647777dab0Sopenharmony_ci */ 657777dab0Sopenharmony_ci#define TEE_MAX_KEY_SIZE_IN_BITS (1024 * 8) 667777dab0Sopenharmony_ci/** 677777dab0Sopenharmony_ci * @brief Defines the length of the SW_RSA key, in bytes. 687777dab0Sopenharmony_ci * 697777dab0Sopenharmony_ci * @since 12 707777dab0Sopenharmony_ci */ 717777dab0Sopenharmony_ci#define SW_RSA_KEYLEN 1024 727777dab0Sopenharmony_ci/** 737777dab0Sopenharmony_ci * @brief Defines the maximum length of other Diffie-Hellman (DH) information, in bytes. 747777dab0Sopenharmony_ci * 757777dab0Sopenharmony_ci * @since 12 767777dab0Sopenharmony_ci */ 777777dab0Sopenharmony_ci#define TEE_DH_MAX_SIZE_OF_OTHER_INFO 64 /* bytes */ 787777dab0Sopenharmony_ci 797777dab0Sopenharmony_ci/** 807777dab0Sopenharmony_ci * @brief Enumerates the cryptographic operation handles. 817777dab0Sopenharmony_ci * 827777dab0Sopenharmony_ci * @since 12 837777dab0Sopenharmony_ci */ 847777dab0Sopenharmony_cienum __TEE_Operation_Constants { 857777dab0Sopenharmony_ci /** Cipher */ 867777dab0Sopenharmony_ci TEE_OPERATION_CIPHER = 0x1, 877777dab0Sopenharmony_ci /** MAC */ 887777dab0Sopenharmony_ci TEE_OPERATION_MAC = 3, 897777dab0Sopenharmony_ci /** AE */ 907777dab0Sopenharmony_ci TEE_OPERATION_AE = 4, 917777dab0Sopenharmony_ci /** Digest */ 927777dab0Sopenharmony_ci TEE_OPERATION_DIGEST = 5, 937777dab0Sopenharmony_ci /** Asymmetric Cipher */ 947777dab0Sopenharmony_ci TEE_OPERATION_ASYMMETRIC_CIPHER = 6, 957777dab0Sopenharmony_ci /** Asymmetric Signature */ 967777dab0Sopenharmony_ci TEE_OPERATION_ASYMMETRIC_SIGNATURE = 7, 977777dab0Sopenharmony_ci /** Key Derivation */ 987777dab0Sopenharmony_ci TEE_OPERATION_KEY_DERIVATION = 8, 997777dab0Sopenharmony_ci}; 1007777dab0Sopenharmony_ci 1017777dab0Sopenharmony_ci/** 1027777dab0Sopenharmony_ci * @brief Enumerates the cryptographic algorithms. 1037777dab0Sopenharmony_ci * 1047777dab0Sopenharmony_ci * @since 12 1057777dab0Sopenharmony_ci */ 1067777dab0Sopenharmony_cienum __tee_crypto_algorithm_id { 1077777dab0Sopenharmony_ci /** Invalid algorithm */ 1087777dab0Sopenharmony_ci TEE_ALG_INVALID = 0x0, 1097777dab0Sopenharmony_ci /** AES_ECB_NOPAD */ 1107777dab0Sopenharmony_ci TEE_ALG_AES_ECB_NOPAD = 0x10000010, 1117777dab0Sopenharmony_ci /** AES_CBC_NOPAD */ 1127777dab0Sopenharmony_ci TEE_ALG_AES_CBC_NOPAD = 0x10000110, 1137777dab0Sopenharmony_ci /** AES_CTR */ 1147777dab0Sopenharmony_ci TEE_ALG_AES_CTR = 0x10000210, 1157777dab0Sopenharmony_ci /** AES_CTS */ 1167777dab0Sopenharmony_ci TEE_ALG_AES_CTS = 0x10000310, 1177777dab0Sopenharmony_ci /** AES_XTS */ 1187777dab0Sopenharmony_ci TEE_ALG_AES_XTS = 0x10000410, 1197777dab0Sopenharmony_ci /** AES_CBC_MAC_NOPAD */ 1207777dab0Sopenharmony_ci TEE_ALG_AES_CBC_MAC_NOPAD = 0x30000110, 1217777dab0Sopenharmony_ci /** AES_CBC_MAC_PKCS5 */ 1227777dab0Sopenharmony_ci TEE_ALG_AES_CBC_MAC_PKCS5 = 0x30000510, 1237777dab0Sopenharmony_ci /** AES_CMAC */ 1247777dab0Sopenharmony_ci TEE_ALG_AES_CMAC = 0x30000610, 1257777dab0Sopenharmony_ci /** AES_GMAC */ 1267777dab0Sopenharmony_ci TEE_ALG_AES_GMAC = 0x30000810, 1277777dab0Sopenharmony_ci /** AES_CCM */ 1287777dab0Sopenharmony_ci TEE_ALG_AES_CCM = 0x40000710, 1297777dab0Sopenharmony_ci /** AES_GCM */ 1307777dab0Sopenharmony_ci TEE_ALG_AES_GCM = 0x40000810, 1317777dab0Sopenharmony_ci /** DES_ECB_NOPAD */ 1327777dab0Sopenharmony_ci TEE_ALG_DES_ECB_NOPAD = 0x10000011, 1337777dab0Sopenharmony_ci /** DES_CBC_NOPAD */ 1347777dab0Sopenharmony_ci TEE_ALG_DES_CBC_NOPAD = 0x10000111, 1357777dab0Sopenharmony_ci /** DES_CBC_MAC_NOPAD */ 1367777dab0Sopenharmony_ci TEE_ALG_DES_CBC_MAC_NOPAD = 0x30000111, 1377777dab0Sopenharmony_ci /** DES_CBC_MAC_PKCS5 */ 1387777dab0Sopenharmony_ci TEE_ALG_DES_CBC_MAC_PKCS5 = 0x30000511, 1397777dab0Sopenharmony_ci /** DES3_ECB_NOPAD */ 1407777dab0Sopenharmony_ci TEE_ALG_DES3_ECB_NOPAD = 0x10000013, 1417777dab0Sopenharmony_ci /** DES3_CBC_NOPAD */ 1427777dab0Sopenharmony_ci TEE_ALG_DES3_CBC_NOPAD = 0x10000113, 1437777dab0Sopenharmony_ci /** DES3_CBC_MAC_NOPAD */ 1447777dab0Sopenharmony_ci TEE_ALG_DES3_CBC_MAC_NOPAD = 0x30000113, 1457777dab0Sopenharmony_ci /** DES3_CBC_MAC_PKCS5 */ 1467777dab0Sopenharmony_ci TEE_ALG_DES3_CBC_MAC_PKCS5 = 0x30000513, 1477777dab0Sopenharmony_ci /** RSASSA_PKCS1_V1_5_MD5 */ 1487777dab0Sopenharmony_ci TEE_ALG_RSASSA_PKCS1_V1_5_MD5 = 0x70001830, 1497777dab0Sopenharmony_ci /** RSASSA_PKCS1_V1_5_SHA1 */ 1507777dab0Sopenharmony_ci TEE_ALG_RSASSA_PKCS1_V1_5_SHA1 = 0x70002830, 1517777dab0Sopenharmony_ci /** RSASSA_PKCS1_V1_5_SHA224 */ 1527777dab0Sopenharmony_ci TEE_ALG_RSASSA_PKCS1_V1_5_SHA224 = 0x70003830, 1537777dab0Sopenharmony_ci /** RSASSA_PKCS1_V1_5_SHA256 */ 1547777dab0Sopenharmony_ci TEE_ALG_RSASSA_PKCS1_V1_5_SHA256 = 0x70004830, 1557777dab0Sopenharmony_ci /** RSASSA_PKCS1_V1_5_SHA384 */ 1567777dab0Sopenharmony_ci TEE_ALG_RSASSA_PKCS1_V1_5_SHA384 = 0x70005830, 1577777dab0Sopenharmony_ci /** RSASSA_PKCS1_V1_5_SHA512 */ 1587777dab0Sopenharmony_ci TEE_ALG_RSASSA_PKCS1_V1_5_SHA512 = 0x70006830, 1597777dab0Sopenharmony_ci /** RSASSA_PKCS1_PSS_MGF1_MD5 */ 1607777dab0Sopenharmony_ci TEE_ALG_RSASSA_PKCS1_PSS_MGF1_MD5 = 0x70111930, 1617777dab0Sopenharmony_ci /** RSASSA_PKCS1_PSS_MGF1_SHA1 */ 1627777dab0Sopenharmony_ci TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA1 = 0x70212930, 1637777dab0Sopenharmony_ci /** RSASSA_PKCS1_PSS_MGF1_SHA224 */ 1647777dab0Sopenharmony_ci TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA224 = 0x70313930, 1657777dab0Sopenharmony_ci /** RSASSA_PKCS1_PSS_MGF1_SHA256 */ 1667777dab0Sopenharmony_ci TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA256 = 0x70414930, 1677777dab0Sopenharmony_ci /** RSASSA_PKCS1_PSS_MGF1_SHA384 */ 1687777dab0Sopenharmony_ci TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA384 = 0x70515930, 1697777dab0Sopenharmony_ci /** RSASSA_PKCS1_PSS_MGF1_SHA512 */ 1707777dab0Sopenharmony_ci TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA512 = 0x70616930, 1717777dab0Sopenharmony_ci /** RSAES_PKCS1_V1_5 */ 1727777dab0Sopenharmony_ci TEE_ALG_RSAES_PKCS1_V1_5 = 0x60000130, 1737777dab0Sopenharmony_ci /** RSAES_PKCS1_OAEP_MGF1_SHA1 */ 1747777dab0Sopenharmony_ci TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1 = 0x60210230, 1757777dab0Sopenharmony_ci /** RSAES_PKCS1_OAEP_MGF1_SHA224 */ 1767777dab0Sopenharmony_ci TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA224 = 0x60211230, 1777777dab0Sopenharmony_ci /** RSAES_PKCS1_OAEP_MGF1_SHA256 */ 1787777dab0Sopenharmony_ci TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA256 = 0x60212230, 1797777dab0Sopenharmony_ci /** RSAES_PKCS1_OAEP_MGF1_SHA384 */ 1807777dab0Sopenharmony_ci TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA384 = 0x60213230, 1817777dab0Sopenharmony_ci /** RSAES_PKCS1_OAEP_MGF1_SHA512 */ 1827777dab0Sopenharmony_ci TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA512 = 0x60214230, 1837777dab0Sopenharmony_ci /** RSA_NOPAD */ 1847777dab0Sopenharmony_ci TEE_ALG_RSA_NOPAD = 0x60000030, 1857777dab0Sopenharmony_ci /** DSA_SHA1 */ 1867777dab0Sopenharmony_ci TEE_ALG_DSA_SHA1 = 0x70002131, 1877777dab0Sopenharmony_ci /** DSA_SHA224 */ 1887777dab0Sopenharmony_ci TEE_ALG_DSA_SHA224 = 0x70003131, 1897777dab0Sopenharmony_ci /** DSA_SHA256 */ 1907777dab0Sopenharmony_ci TEE_ALG_DSA_SHA256 = 0x70004131, 1917777dab0Sopenharmony_ci /** DH_DERIVE_SHARED_SECRET */ 1927777dab0Sopenharmony_ci TEE_ALG_DH_DERIVE_SHARED_SECRET = 0x80000032, 1937777dab0Sopenharmony_ci /** MD5 */ 1947777dab0Sopenharmony_ci TEE_ALG_MD5 = 0x50000001, 1957777dab0Sopenharmony_ci /** SHA1 */ 1967777dab0Sopenharmony_ci TEE_ALG_SHA1 = 0x50000002, 1977777dab0Sopenharmony_ci /** SHA224 */ 1987777dab0Sopenharmony_ci TEE_ALG_SHA224 = 0x50000003, 1997777dab0Sopenharmony_ci /** SHA256 */ 2007777dab0Sopenharmony_ci TEE_ALG_SHA256 = 0x50000004, 2017777dab0Sopenharmony_ci /** SHA384 */ 2027777dab0Sopenharmony_ci TEE_ALG_SHA384 = 0x50000005, 2037777dab0Sopenharmony_ci /** SHA512 */ 2047777dab0Sopenharmony_ci TEE_ALG_SHA512 = 0x50000006, 2057777dab0Sopenharmony_ci /** HMAC_MD5 */ 2067777dab0Sopenharmony_ci TEE_ALG_HMAC_MD5 = 0x30000001, 2077777dab0Sopenharmony_ci /** HMAC_SHA1 */ 2087777dab0Sopenharmony_ci TEE_ALG_HMAC_SHA1 = 0x30000002, 2097777dab0Sopenharmony_ci /** HMAC_SHA1 */ 2107777dab0Sopenharmony_ci TEE_ALG_HMAC_SHA224 = 0x30000003, 2117777dab0Sopenharmony_ci /** HMAC_SHA224 */ 2127777dab0Sopenharmony_ci TEE_ALG_HMAC_SHA256 = 0x30000004, 2137777dab0Sopenharmony_ci /** HMAC_SHA256 */ 2147777dab0Sopenharmony_ci TEE_ALG_HMAC_SHA384 = 0x30000005, 2157777dab0Sopenharmony_ci /** HMAC_SHA384 */ 2167777dab0Sopenharmony_ci TEE_ALG_HMAC_SHA512 = 0x30000006, 2177777dab0Sopenharmony_ci /** HMAC_SHA512 */ 2187777dab0Sopenharmony_ci TEE_ALG_HMAC_SM3 = 0x30000007, 2197777dab0Sopenharmony_ci /** HMAC_SM3 */ 2207777dab0Sopenharmony_ci TEE_ALG_AES_ECB_PKCS5 = 0x10000020, 2217777dab0Sopenharmony_ci /** AES_ECB_PKCS5 */ 2227777dab0Sopenharmony_ci TEE_ALG_AES_CBC_PKCS5 = 0x10000220, 2237777dab0Sopenharmony_ci /** AES_CBC_PKCS5 */ 2247777dab0Sopenharmony_ci TEE_ALG_ECDSA_SHA1 = 0x70001042, 2257777dab0Sopenharmony_ci /** ECDSA_SHA1 */ 2267777dab0Sopenharmony_ci TEE_ALG_ECDSA_SHA224 = 0x70002042, 2277777dab0Sopenharmony_ci /** ECDSA_SHA224 */ 2287777dab0Sopenharmony_ci TEE_ALG_ECDSA_SHA256 = 0x70003042, 2297777dab0Sopenharmony_ci /** ECDSA_SHA256 */ 2307777dab0Sopenharmony_ci TEE_ALG_ECDSA_SHA384 = 0x70004042, 2317777dab0Sopenharmony_ci /** ECDSA_SHA384 */ 2327777dab0Sopenharmony_ci TEE_ALG_ECDSA_SHA512 = 0x70005042, 2337777dab0Sopenharmony_ci /** ECDSA_SHA512 */ 2347777dab0Sopenharmony_ci TEE_ALG_ED25519 = 0x70005043, 2357777dab0Sopenharmony_ci /** ED25519 */ 2367777dab0Sopenharmony_ci TEE_ALG_ECDH_DERIVE_SHARED_SECRET = 0x80000042, 2377777dab0Sopenharmony_ci /** ECDH_DERIVE_SHARED_SECRET */ 2387777dab0Sopenharmony_ci TEE_ALG_X25519 = 0x80000044, 2397777dab0Sopenharmony_ci /** X25519 */ 2407777dab0Sopenharmony_ci TEE_ALG_ECC = 0x80000001, 2417777dab0Sopenharmony_ci /** ECC */ 2427777dab0Sopenharmony_ci TEE_ALG_ECDSA_P192 = 0x70001042, 2437777dab0Sopenharmony_ci /** ECDSA_P192 */ 2447777dab0Sopenharmony_ci TEE_ALG_ECDSA_P224 = 0x70002042, 2457777dab0Sopenharmony_ci /** ECDSA_P224 */ 2467777dab0Sopenharmony_ci TEE_ALG_ECDSA_P256 = 0x70003042, 2477777dab0Sopenharmony_ci /** ECDSA_P256 */ 2487777dab0Sopenharmony_ci TEE_ALG_ECDSA_P384 = 0x70004042, 2497777dab0Sopenharmony_ci /** ECDSA_P521 */ 2507777dab0Sopenharmony_ci TEE_ALG_ECDSA_P521 = 0x70005042, 2517777dab0Sopenharmony_ci /** ECDH_P192 */ 2527777dab0Sopenharmony_ci TEE_ALG_ECDH_P192 = 0x80001042, 2537777dab0Sopenharmony_ci /** ECDH_P224 */ 2547777dab0Sopenharmony_ci TEE_ALG_ECDH_P224 = 0x80002042, 2557777dab0Sopenharmony_ci /** ECDH_P256 */ 2567777dab0Sopenharmony_ci TEE_ALG_ECDH_P256 = 0x80003042, 2577777dab0Sopenharmony_ci /** ECDH_P384 */ 2587777dab0Sopenharmony_ci TEE_ALG_ECDH_P384 = 0x80004042, 2597777dab0Sopenharmony_ci /** ECDH_P521 */ 2607777dab0Sopenharmony_ci TEE_ALG_ECDH_P521 = 0x80005042, 2617777dab0Sopenharmony_ci /** SIP_HASH */ 2627777dab0Sopenharmony_ci TEE_ALG_SIP_HASH = 0xF0000002, 2637777dab0Sopenharmony_ci /** SM2_DSA_SM3 */ 2647777dab0Sopenharmony_ci TEE_ALG_SM2_DSA_SM3 = 0x70006045, 2657777dab0Sopenharmony_ci /** SM2_PKE */ 2667777dab0Sopenharmony_ci TEE_ALG_SM2_PKE = 0x80000045, 2677777dab0Sopenharmony_ci /** SM3 */ 2687777dab0Sopenharmony_ci TEE_ALG_SM3 = 0x50000007, 2697777dab0Sopenharmony_ci /** SM4_ECB_NOPAD */ 2707777dab0Sopenharmony_ci TEE_ALG_SM4_ECB_NOPAD = 0x10000014, 2717777dab0Sopenharmony_ci /** SM4_CBC_NOPAD */ 2727777dab0Sopenharmony_ci TEE_ALG_SM4_CBC_NOPAD = 0x10000114, 2737777dab0Sopenharmony_ci /** SM4_CBC_PKCS7 */ 2747777dab0Sopenharmony_ci TEE_ALG_SM4_CBC_PKCS7 = 0xF0000003, 2757777dab0Sopenharmony_ci /** SM4_CTR */ 2767777dab0Sopenharmony_ci TEE_ALG_SM4_CTR = 0x10000214, 2777777dab0Sopenharmony_ci /** SM4_CFB128 */ 2787777dab0Sopenharmony_ci TEE_ALG_SM4_CFB128 = 0xF0000000, 2797777dab0Sopenharmony_ci /** SM4_XTS */ 2807777dab0Sopenharmony_ci TEE_ALG_SM4_XTS = 0x10000414, 2817777dab0Sopenharmony_ci /** SM4_OFB */ 2827777dab0Sopenharmony_ci TEE_ALG_SM4_OFB = 0x10000514, 2837777dab0Sopenharmony_ci /** AES_OFB */ 2847777dab0Sopenharmony_ci TEE_ALG_AES_OFB = 0x10000510, 2857777dab0Sopenharmony_ci /** SM4_GCM */ 2867777dab0Sopenharmony_ci TEE_ALG_SM4_GCM = 0xF0000005, 2877777dab0Sopenharmony_ci}; 2887777dab0Sopenharmony_ci 2897777dab0Sopenharmony_ci/** 2907777dab0Sopenharmony_ci * @see __tee_crypto_algorithm_id 2917777dab0Sopenharmony_ci */ 2927777dab0Sopenharmony_citypedef enum __tee_crypto_algorithm_id tee_crypto_algorithm_id; 2937777dab0Sopenharmony_ci/** 2947777dab0Sopenharmony_ci * @brief No element is available. 2957777dab0Sopenharmony_ci * 2967777dab0Sopenharmony_ci * @since 12 2977777dab0Sopenharmony_ci */ 2987777dab0Sopenharmony_ci#define TEE_OPTIONAL_ELEMENT_NONE 0x00000000 2997777dab0Sopenharmony_ci 3007777dab0Sopenharmony_ci/** 3017777dab0Sopenharmony_ci * @brief Enumerates the Elliptic-Curve Cryptography (ECC) curves supported. 3027777dab0Sopenharmony_ci * 3037777dab0Sopenharmony_ci * @since 12 3047777dab0Sopenharmony_ci */ 3057777dab0Sopenharmony_citypedef enum { 3067777dab0Sopenharmony_ci /** CURVE_NIST_P192 */ 3077777dab0Sopenharmony_ci TEE_ECC_CURVE_NIST_P192 = 0x00000001, 3087777dab0Sopenharmony_ci /** CURVE_NIST_P224 */ 3097777dab0Sopenharmony_ci TEE_ECC_CURVE_NIST_P224 = 0x00000002, 3107777dab0Sopenharmony_ci /** CURVE_NIST_P256 */ 3117777dab0Sopenharmony_ci TEE_ECC_CURVE_NIST_P256 = 0x00000003, 3127777dab0Sopenharmony_ci /** CURVE_NIST_P384 */ 3137777dab0Sopenharmony_ci TEE_ECC_CURVE_NIST_P384 = 0x00000004, 3147777dab0Sopenharmony_ci /** CURVE_NIST_P521 */ 3157777dab0Sopenharmony_ci TEE_ECC_CURVE_NIST_P521 = 0x00000005, 3167777dab0Sopenharmony_ci /** CURVE_SM2 256 bits */ 3177777dab0Sopenharmony_ci TEE_ECC_CURVE_SM2 = 0x00000300, 3187777dab0Sopenharmony_ci /** CURVE_25519 256 bits */ 3197777dab0Sopenharmony_ci TEE_ECC_CURVE_25519 = 0x00000200, 3207777dab0Sopenharmony_ci} TEE_ECC_CURVE; 3217777dab0Sopenharmony_ci 3227777dab0Sopenharmony_ci/** 3237777dab0Sopenharmony_ci * @brief Enumerates the Mask Generation Function (MGF1) modes. 3247777dab0Sopenharmony_ci * 3257777dab0Sopenharmony_ci * @since 12 3267777dab0Sopenharmony_ci */ 3277777dab0Sopenharmony_citypedef enum { 3287777dab0Sopenharmony_ci TEE_DH_HASH_SHA1_mode = 0, 3297777dab0Sopenharmony_ci TEE_DH_HASH_SHA224_mode = 1, 3307777dab0Sopenharmony_ci TEE_DH_HASH_SHA256_mode = 2, 3317777dab0Sopenharmony_ci TEE_DH_HASH_SHA384_mode = 3, 3327777dab0Sopenharmony_ci TEE_DH_HASH_SHA512_mode = 4, 3337777dab0Sopenharmony_ci TEE_DH_HASH_NumOfModes, 3347777dab0Sopenharmony_ci} TEE_DH_HASH_Mode; 3357777dab0Sopenharmony_ci 3367777dab0Sopenharmony_ci/** 3377777dab0Sopenharmony_ci * @brief Enumerates the cryptographic operation modes. 3387777dab0Sopenharmony_ci * 3397777dab0Sopenharmony_ci * @since 12 3407777dab0Sopenharmony_ci */ 3417777dab0Sopenharmony_cienum __TEE_OperationMode { 3427777dab0Sopenharmony_ci /** Encryption */ 3437777dab0Sopenharmony_ci TEE_MODE_ENCRYPT = 0x0, 3447777dab0Sopenharmony_ci /** Decryption */ 3457777dab0Sopenharmony_ci TEE_MODE_DECRYPT, 3467777dab0Sopenharmony_ci /** Signing */ 3477777dab0Sopenharmony_ci TEE_MODE_SIGN, 3487777dab0Sopenharmony_ci /** Signature verification */ 3497777dab0Sopenharmony_ci TEE_MODE_VERIFY, 3507777dab0Sopenharmony_ci /** MAC */ 3517777dab0Sopenharmony_ci TEE_MODE_MAC, 3527777dab0Sopenharmony_ci /** Digest */ 3537777dab0Sopenharmony_ci TEE_MODE_DIGEST, 3547777dab0Sopenharmony_ci /** Key derivation */ 3557777dab0Sopenharmony_ci TEE_MODE_DERIVE 3567777dab0Sopenharmony_ci}; 3577777dab0Sopenharmony_ci 3587777dab0Sopenharmony_ci/** 3597777dab0Sopenharmony_ci * @brief Enumerates the cryptographic operation states. 3607777dab0Sopenharmony_ci * 3617777dab0Sopenharmony_ci * @since 12 3627777dab0Sopenharmony_ci */ 3637777dab0Sopenharmony_cienum tee_operation_state { 3647777dab0Sopenharmony_ci /** Initial */ 3657777dab0Sopenharmony_ci TEE_OPERATION_STATE_INITIAL = 0x00000000, 3667777dab0Sopenharmony_ci /** Active */ 3677777dab0Sopenharmony_ci TEE_OPERATION_STATE_ACTIVE = 0x00000001, 3687777dab0Sopenharmony_ci}; 3697777dab0Sopenharmony_ci 3707777dab0Sopenharmony_ci/** 3717777dab0Sopenharmony_ci * @see __TEE_OperationMode 3727777dab0Sopenharmony_ci */ 3737777dab0Sopenharmony_citypedef uint32_t TEE_OperationMode; 3747777dab0Sopenharmony_ci 3757777dab0Sopenharmony_ci/** 3767777dab0Sopenharmony_ci * @brief Defines the operation information. 3777777dab0Sopenharmony_ci * 3787777dab0Sopenharmony_ci * @since 12 3797777dab0Sopenharmony_ci */ 3807777dab0Sopenharmony_cistruct __TEE_OperationInfo { 3817777dab0Sopenharmony_ci /** Algorithm ID */ 3827777dab0Sopenharmony_ci uint32_t algorithm; /* #__TEE_CRYPTO_ALGORITHM_ID */ 3837777dab0Sopenharmony_ci /** Operation type */ 3847777dab0Sopenharmony_ci uint32_t operationClass; /* #__TEE_Operation_Constants */ 3857777dab0Sopenharmony_ci /** Operation mode */ 3867777dab0Sopenharmony_ci uint32_t mode; /* #__TEE_OperationMode */ 3877777dab0Sopenharmony_ci /** Digest length */ 3887777dab0Sopenharmony_ci uint32_t digestLength; 3897777dab0Sopenharmony_ci /** Maximum key length */ 3907777dab0Sopenharmony_ci uint32_t maxKeySize; 3917777dab0Sopenharmony_ci /** Key length*/ 3927777dab0Sopenharmony_ci uint32_t keySize; 3937777dab0Sopenharmony_ci /** Required key usage */ 3947777dab0Sopenharmony_ci uint32_t requiredKeyUsage; 3957777dab0Sopenharmony_ci /** Handle state */ 3967777dab0Sopenharmony_ci uint32_t handleState; 3977777dab0Sopenharmony_ci /** Key */ 3987777dab0Sopenharmony_ci void *keyValue; 3997777dab0Sopenharmony_ci}; 4007777dab0Sopenharmony_ci 4017777dab0Sopenharmony_ci/** 4027777dab0Sopenharmony_ci * @brief Defines the <b>__TEE_OperationInfo</b> struct. 4037777dab0Sopenharmony_ci * 4047777dab0Sopenharmony_ci * @see __TEE_OperationInfo 4057777dab0Sopenharmony_ci */ 4067777dab0Sopenharmony_citypedef struct __TEE_OperationInfo TEE_OperationInfo; 4077777dab0Sopenharmony_ci 4087777dab0Sopenharmony_ci/** 4097777dab0Sopenharmony_ci * @brief Defines the key information stored in the <b>OperationInfo</b>. 4107777dab0Sopenharmony_ci * 4117777dab0Sopenharmony_ci * @since 12 4127777dab0Sopenharmony_ci */ 4137777dab0Sopenharmony_citypedef struct { 4147777dab0Sopenharmony_ci /** Key length */ 4157777dab0Sopenharmony_ci uint32_t keySize; 4167777dab0Sopenharmony_ci /** Required key usage */ 4177777dab0Sopenharmony_ci uint32_t requiredKeyUsage; 4187777dab0Sopenharmony_ci} TEE_OperationInfoKey; 4197777dab0Sopenharmony_ci 4207777dab0Sopenharmony_ci/** 4217777dab0Sopenharmony_ci * @brief Defines information about an operation. 4227777dab0Sopenharmony_ci * 4237777dab0Sopenharmony_ci * @since 12 4247777dab0Sopenharmony_ci */ 4257777dab0Sopenharmony_citypedef struct { 4267777dab0Sopenharmony_ci /** Algorithm ID */ 4277777dab0Sopenharmony_ci uint32_t algorithm; 4287777dab0Sopenharmony_ci /** Operation type */ 4297777dab0Sopenharmony_ci uint32_t operationClass; 4307777dab0Sopenharmony_ci /** Operation mode */ 4317777dab0Sopenharmony_ci uint32_t mode; 4327777dab0Sopenharmony_ci /** Digest length */ 4337777dab0Sopenharmony_ci uint32_t digestLength; 4347777dab0Sopenharmony_ci /** Maximum key length */ 4357777dab0Sopenharmony_ci uint32_t maxKeySize; 4367777dab0Sopenharmony_ci /** Handle state */ 4377777dab0Sopenharmony_ci uint32_t handleState; 4387777dab0Sopenharmony_ci /** Operation state */ 4397777dab0Sopenharmony_ci uint32_t operationState; 4407777dab0Sopenharmony_ci /** Number of keys */ 4417777dab0Sopenharmony_ci uint32_t numberOfKeys; 4427777dab0Sopenharmony_ci /** Key information */ 4437777dab0Sopenharmony_ci TEE_OperationInfoKey keyInformation[]; 4447777dab0Sopenharmony_ci} TEE_OperationInfoMultiple; 4457777dab0Sopenharmony_ci 4467777dab0Sopenharmony_ci/** 4477777dab0Sopenharmony_ci * @brief Defines the cryptographic operation handle. 4487777dab0Sopenharmony_ci * 4497777dab0Sopenharmony_ci * @since 12 4507777dab0Sopenharmony_ci */ 4517777dab0Sopenharmony_cistruct __TEE_OperationHandle { 4527777dab0Sopenharmony_ci /** Algorithm ID */ 4537777dab0Sopenharmony_ci uint32_t algorithm; 4547777dab0Sopenharmony_ci /** Operation type */ 4557777dab0Sopenharmony_ci uint32_t operationClass; 4567777dab0Sopenharmony_ci /** Operation mode */ 4577777dab0Sopenharmony_ci uint32_t mode; 4587777dab0Sopenharmony_ci /** Digest length */ 4597777dab0Sopenharmony_ci uint32_t digestLength; 4607777dab0Sopenharmony_ci /** Maximum key length */ 4617777dab0Sopenharmony_ci uint32_t maxKeySize; 4627777dab0Sopenharmony_ci /** Key length */ 4637777dab0Sopenharmony_ci uint32_t keySize; 4647777dab0Sopenharmony_ci /** Key length */ 4657777dab0Sopenharmony_ci uint32_t keySize2; 4667777dab0Sopenharmony_ci /** Required key usage */ 4677777dab0Sopenharmony_ci uint32_t requiredKeyUsage; 4687777dab0Sopenharmony_ci /** Handle state */ 4697777dab0Sopenharmony_ci uint32_t handleState; 4707777dab0Sopenharmony_ci /** Key */ 4717777dab0Sopenharmony_ci void *keyValue; 4727777dab0Sopenharmony_ci /** Key */ 4737777dab0Sopenharmony_ci void *keyValue2; 4747777dab0Sopenharmony_ci /** */ 4757777dab0Sopenharmony_ci void *crypto_ctxt; 4767777dab0Sopenharmony_ci /** */ 4777777dab0Sopenharmony_ci void *hmac_rest_ctext; 4787777dab0Sopenharmony_ci /** iv */ 4797777dab0Sopenharmony_ci void *IV; 4807777dab0Sopenharmony_ci /** Public key */ 4817777dab0Sopenharmony_ci void *publicKey; 4827777dab0Sopenharmony_ci /** Length of the public key */ 4837777dab0Sopenharmony_ci uint32_t publicKeyLen; 4847777dab0Sopenharmony_ci /** Private key */ 4857777dab0Sopenharmony_ci void *privateKey; 4867777dab0Sopenharmony_ci /** Length of the private key */ 4877777dab0Sopenharmony_ci uint32_t privateKeyLen; 4887777dab0Sopenharmony_ci /** Length of the IV */ 4897777dab0Sopenharmony_ci uint32_t IVLen; 4907777dab0Sopenharmony_ci /** Operation lock */ 4917777dab0Sopenharmony_ci pthread_mutex_t operation_lock; 4927777dab0Sopenharmony_ci /** HAL information */ 4937777dab0Sopenharmony_ci void *hal_info; 4947777dab0Sopenharmony_ci}; 4957777dab0Sopenharmony_ci 4967777dab0Sopenharmony_ci/** 4977777dab0Sopenharmony_ci * @brief Defines the data used for conversion of integers. 4987777dab0Sopenharmony_ci * 4997777dab0Sopenharmony_ci * @since 12 5007777dab0Sopenharmony_ci */ 5017777dab0Sopenharmony_citypedef struct { 5027777dab0Sopenharmony_ci /** Source */ 5037777dab0Sopenharmony_ci uint32_t src; 5047777dab0Sopenharmony_ci /** Destination */ 5057777dab0Sopenharmony_ci uint32_t dest; 5067777dab0Sopenharmony_ci} crypto_uint2uint; 5077777dab0Sopenharmony_ci 5087777dab0Sopenharmony_ci/** 5097777dab0Sopenharmony_ci * @brief Defines the maximum length of an RSA public key. 5107777dab0Sopenharmony_ci * 5117777dab0Sopenharmony_ci * @since 12 5127777dab0Sopenharmony_ci */ 5137777dab0Sopenharmony_ci#define RSA_PUBKEY_MAXSIZE sizeof(CRYS_RSAUserPubKey_t) 5147777dab0Sopenharmony_ci/** 5157777dab0Sopenharmony_ci * @brief Defines the maximum length of an RES private key. 5167777dab0Sopenharmony_ci * 5177777dab0Sopenharmony_ci * @since 12 5187777dab0Sopenharmony_ci */ 5197777dab0Sopenharmony_ci#define RSA_PRIVKEY_MAXSIZE sizeof(CRYS_RSAUserPrivKey_t) 5207777dab0Sopenharmony_ci 5217777dab0Sopenharmony_ci/** 5227777dab0Sopenharmony_ci * @brief Defines a structure to hold the input and output data. 5237777dab0Sopenharmony_ci * 5247777dab0Sopenharmony_ci * @since 12 5257777dab0Sopenharmony_ci */ 5267777dab0Sopenharmony_citypedef struct { 5277777dab0Sopenharmony_ci /** Source data */ 5287777dab0Sopenharmony_ci void *src_data; 5297777dab0Sopenharmony_ci /** Length of the source data */ 5307777dab0Sopenharmony_ci size_t src_len; 5317777dab0Sopenharmony_ci /** Destination data */ 5327777dab0Sopenharmony_ci void *dest_data; 5337777dab0Sopenharmony_ci /** Length of the destination data */ 5347777dab0Sopenharmony_ci size_t *dest_len; 5357777dab0Sopenharmony_ci} operation_src_dest; 5367777dab0Sopenharmony_ci 5377777dab0Sopenharmony_ci/** 5387777dab0Sopenharmony_ci * @brief Defines the AE initialization data. 5397777dab0Sopenharmony_ci * 5407777dab0Sopenharmony_ci * @since 12 5417777dab0Sopenharmony_ci */ 5427777dab0Sopenharmony_citypedef struct { 5437777dab0Sopenharmony_ci /** nonce */ 5447777dab0Sopenharmony_ci void *nonce; 5457777dab0Sopenharmony_ci /** Leng of nonce */ 5467777dab0Sopenharmony_ci size_t nonce_len; 5477777dab0Sopenharmony_ci /** Length of the tag */ 5487777dab0Sopenharmony_ci uint32_t tag_len; 5497777dab0Sopenharmony_ci /** Length of the additional authenticated data (AAD) */ 5507777dab0Sopenharmony_ci size_t aad_len; 5517777dab0Sopenharmony_ci /** Length of the payload */ 5527777dab0Sopenharmony_ci size_t payload_len; 5537777dab0Sopenharmony_ci} operation_ae_init; 5547777dab0Sopenharmony_ci 5557777dab0Sopenharmony_ci/** 5567777dab0Sopenharmony_ci * @brief Defines the pointer to <b>__TEE_OperationHandle</b>. 5577777dab0Sopenharmony_ci * 5587777dab0Sopenharmony_ci * @see __TEE_OperationHandle 5597777dab0Sopenharmony_ci * 5607777dab0Sopenharmony_ci * @since 12 5617777dab0Sopenharmony_ci */ 5627777dab0Sopenharmony_citypedef struct __TEE_OperationHandle *TEE_OperationHandle; 5637777dab0Sopenharmony_ci 5647777dab0Sopenharmony_ci/** 5657777dab0Sopenharmony_ci * @brief Defines the <b>__TEE_OperationHandle</b> struct. 5667777dab0Sopenharmony_ci * 5677777dab0Sopenharmony_ci * @see __TEE_OperationHandle 5687777dab0Sopenharmony_ci * 5697777dab0Sopenharmony_ci * @since 12 5707777dab0Sopenharmony_ci */ 5717777dab0Sopenharmony_citypedef struct __TEE_OperationHandle TEE_OperationHandleVar; 5727777dab0Sopenharmony_ci 5737777dab0Sopenharmony_ci/** 5747777dab0Sopenharmony_ci * @brief Defines the <b>__TEE_ObjectHandle</b> struct. 5757777dab0Sopenharmony_ci * 5767777dab0Sopenharmony_ci * @since 12 5777777dab0Sopenharmony_ci */ 5787777dab0Sopenharmony_citypedef struct __TEE_ObjectHandle TEE_ObjectHandleVar; 5797777dab0Sopenharmony_ci 5807777dab0Sopenharmony_ci/** 5817777dab0Sopenharmony_ci * @brief Allocates an operation handle. 5827777dab0Sopenharmony_ci * 5837777dab0Sopenharmony_ci * @param operation Indicates the pointer to the operation handle. 5847777dab0Sopenharmony_ci * @param algorithm Indicates the cipher algorithm. 5857777dab0Sopenharmony_ci * @param mode Indicates the operation mode. 5867777dab0Sopenharmony_ci * @param maxKeySize Indicates the maximum length of the key. 5877777dab0Sopenharmony_ci * 5887777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation handle is allocated. 5897777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_OUT_OF_MEMORY</b> if there is no enough memory for this operation. 5907777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_NOT_SUPPORTED</b> if the specified algorithm is not supported. 5917777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_GENERIC</b> if the operation fails due to other errors. 5927777dab0Sopenharmony_ci * 5937777dab0Sopenharmony_ci * @since 12 5947777dab0Sopenharmony_ci * @version 1.0 5957777dab0Sopenharmony_ci */ 5967777dab0Sopenharmony_ciTEE_Result TEE_AllocateOperation(TEE_OperationHandle *operation, uint32_t algorithm, uint32_t mode, 5977777dab0Sopenharmony_ci uint32_t maxKeySize); 5987777dab0Sopenharmony_ci 5997777dab0Sopenharmony_ci/** 6007777dab0Sopenharmony_ci * @brief Releases an operation handle. 6017777dab0Sopenharmony_ci * 6027777dab0Sopenharmony_ci * @param operation Indicates the operation handle to release. 6037777dab0Sopenharmony_ci * 6047777dab0Sopenharmony_ci * @since 12 6057777dab0Sopenharmony_ci * @version 1.0 6067777dab0Sopenharmony_ci */ 6077777dab0Sopenharmony_civoid TEE_FreeOperation(TEE_OperationHandle operation); 6087777dab0Sopenharmony_ci 6097777dab0Sopenharmony_ci/** 6107777dab0Sopenharmony_ci * @brief Obtains operation information. 6117777dab0Sopenharmony_ci * 6127777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 6137777dab0Sopenharmony_ci * @param operationInfo Indicates the pointer to the operation information. 6147777dab0Sopenharmony_ci * 6157777dab0Sopenharmony_ci * @since 12 6167777dab0Sopenharmony_ci * @version 1.0 6177777dab0Sopenharmony_ci */ 6187777dab0Sopenharmony_civoid TEE_GetOperationInfo(const TEE_OperationHandle operation, TEE_OperationInfo *operationInfo); 6197777dab0Sopenharmony_ci 6207777dab0Sopenharmony_ci/** 6217777dab0Sopenharmony_ci * @brief Resets an operation handle. 6227777dab0Sopenharmony_ci * 6237777dab0Sopenharmony_ci * @param operation Indicates the operation handle to reset. 6247777dab0Sopenharmony_ci * 6257777dab0Sopenharmony_ci * @since 12 6267777dab0Sopenharmony_ci * @version 1.0 6277777dab0Sopenharmony_ci */ 6287777dab0Sopenharmony_civoid TEE_ResetOperation(TEE_OperationHandle operation); 6297777dab0Sopenharmony_ci 6307777dab0Sopenharmony_ci/** 6317777dab0Sopenharmony_ci * @brief Sets the key for an operation. 6327777dab0Sopenharmony_ci * 6337777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 6347777dab0Sopenharmony_ci * @param key Indicates the key. 6357777dab0Sopenharmony_ci * 6367777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 6377777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_BAD_PARAMETERS</b> if the operation fails due to invalid parameters. 6387777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_OUT_OF_MEMORY</b> if there is no enough memory for this operation. 6397777dab0Sopenharmony_ci * 6407777dab0Sopenharmony_ci * @since 12 6417777dab0Sopenharmony_ci * @version 1.0 6427777dab0Sopenharmony_ci */ 6437777dab0Sopenharmony_ciTEE_Result TEE_SetOperationKey(TEE_OperationHandle operation, const TEE_ObjectHandle key); 6447777dab0Sopenharmony_ci 6457777dab0Sopenharmony_ci/** 6467777dab0Sopenharmony_ci * @brief Sets two keys for an operation. 6477777dab0Sopenharmony_ci * 6487777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 6497777dab0Sopenharmony_ci * @param key1 Indicates key 1. 6507777dab0Sopenharmony_ci * @param key2 Indicates key 2. 6517777dab0Sopenharmony_ci * 6527777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 6537777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_BAD_PARAMETERS</b> if the operation fails due to invalid parameters. 6547777dab0Sopenharmony_ci * 6557777dab0Sopenharmony_ci * @since 12 6567777dab0Sopenharmony_ci * @version 1.0 6577777dab0Sopenharmony_ci */ 6587777dab0Sopenharmony_ciTEE_Result TEE_SetOperationKey2(TEE_OperationHandle operation, const TEE_ObjectHandle key1, 6597777dab0Sopenharmony_ci const TEE_ObjectHandle key2); 6607777dab0Sopenharmony_ci 6617777dab0Sopenharmony_ci/** 6627777dab0Sopenharmony_ci * @brief Copies an operation handle. 6637777dab0Sopenharmony_ci * 6647777dab0Sopenharmony_ci * @param dstOperation Indicates the destination operation handle. 6657777dab0Sopenharmony_ci * @param srcOperation Indicates the source operation handle. 6667777dab0Sopenharmony_ci * 6677777dab0Sopenharmony_ci * @since 12 6687777dab0Sopenharmony_ci * @version 1.0 6697777dab0Sopenharmony_ci */ 6707777dab0Sopenharmony_civoid TEE_CopyOperation(TEE_OperationHandle dstOperation, const TEE_OperationHandle srcOperation); 6717777dab0Sopenharmony_ci 6727777dab0Sopenharmony_ci/** 6737777dab0Sopenharmony_ci * @brief Initializes the context to start a cipher operation. 6747777dab0Sopenharmony_ci * 6757777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 6767777dab0Sopenharmony_ci * @param IV Indicates the pointer to the buffer storing the operation IV. If this parameter is not used, 6777777dab0Sopenharmony_ci * set it to <b>NULL</b>. 6787777dab0Sopenharmony_ci * @param IVLen Indicates the length of the IV buffer. 6797777dab0Sopenharmony_ci * 6807777dab0Sopenharmony_ci * @since 12 6817777dab0Sopenharmony_ci * @version 1.0 6827777dab0Sopenharmony_ci */ 6837777dab0Sopenharmony_civoid TEE_CipherInit(TEE_OperationHandle operation, const void *IV, size_t IVLen); 6847777dab0Sopenharmony_ci 6857777dab0Sopenharmony_ci/** 6867777dab0Sopenharmony_ci * @brief Updates the data for a cipher operation. 6877777dab0Sopenharmony_ci * 6887777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 6897777dab0Sopenharmony_ci * @param srcData Indicates the pointer to the source data. 6907777dab0Sopenharmony_ci * @param srcLen Indicates the length of the source data. 6917777dab0Sopenharmony_ci * @param destData Indicates the pointer to the destination data. 6927777dab0Sopenharmony_ci * @param destLen Indicates the pointer to the destination data length. 6937777dab0Sopenharmony_ci * 6947777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 6957777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_BAD_PARAMETERS</b> if the operation fails due to invalid parameters. 6967777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_GENERIC</b> if the operation fails due to other errors. 6977777dab0Sopenharmony_ci * 6987777dab0Sopenharmony_ci * @since 12 6997777dab0Sopenharmony_ci * @version 1.0 7007777dab0Sopenharmony_ci */ 7017777dab0Sopenharmony_ciTEE_Result TEE_CipherUpdate(TEE_OperationHandle operation, const void *srcData, size_t srcLen, void *destData, 7027777dab0Sopenharmony_ci size_t *destLen); 7037777dab0Sopenharmony_ci 7047777dab0Sopenharmony_ci/** 7057777dab0Sopenharmony_ci * @brief Finalizes a cipher operation. 7067777dab0Sopenharmony_ci * 7077777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 7087777dab0Sopenharmony_ci * @param srcData Indicates the pointer to the source data. 7097777dab0Sopenharmony_ci * @param srcLen Indicates the length of the source data. 7107777dab0Sopenharmony_ci * @param destData Indicates the pointer to the destination data. 7117777dab0Sopenharmony_ci * @param destLen Indicates the pointer to the destination data length. 7127777dab0Sopenharmony_ci * 7137777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 7147777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_BAD_PARAMETERS</b> if the operation fails due to invalid parameters. 7157777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_GENERIC</b> if the operation fails due to other errors. 7167777dab0Sopenharmony_ci * 7177777dab0Sopenharmony_ci * @since 12 7187777dab0Sopenharmony_ci * @version 1.0 7197777dab0Sopenharmony_ci */ 7207777dab0Sopenharmony_ciTEE_Result TEE_CipherDoFinal(TEE_OperationHandle operation, const void *srcData, size_t srcLen, void *destData, 7217777dab0Sopenharmony_ci size_t *destLen); 7227777dab0Sopenharmony_ci 7237777dab0Sopenharmony_ci/** 7247777dab0Sopenharmony_ci * @brief Updates the digest. 7257777dab0Sopenharmony_ci * 7267777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 7277777dab0Sopenharmony_ci * @param chunk Indicates the pointer to the chunk of data to be hashed. 7287777dab0Sopenharmony_ci * @param chunkSize Indicates the length of the chunk. 7297777dab0Sopenharmony_ci * 7307777dab0Sopenharmony_ci * @since 12 7317777dab0Sopenharmony_ci * @version 1.0 7327777dab0Sopenharmony_ci */ 7337777dab0Sopenharmony_civoid TEE_DigestUpdate(TEE_OperationHandle operation, const void *chunk, size_t chunkSize); 7347777dab0Sopenharmony_ci 7357777dab0Sopenharmony_ci/** 7367777dab0Sopenharmony_ci * @brief Finalizes the message digest operation. 7377777dab0Sopenharmony_ci * 7387777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 7397777dab0Sopenharmony_ci * @param chunk Indicates the pointer to the chunk of data to be hashed. 7407777dab0Sopenharmony_ci * @param chunkLen Indicates the length of the chunk. 7417777dab0Sopenharmony_ci * @param hash Indicates the pointer to the buffer storing the message hash. 7427777dab0Sopenharmony_ci * @param hashLen 7437777dab0Sopenharmony_ci * 7447777dab0Sopenharmony_ci * @since 12 7457777dab0Sopenharmony_ci * @version 1.0 7467777dab0Sopenharmony_ci */ 7477777dab0Sopenharmony_ciTEE_Result TEE_DigestDoFinal(TEE_OperationHandle operation, const void *chunk, size_t chunkLen, void *hash, 7487777dab0Sopenharmony_ci size_t *hashLen); 7497777dab0Sopenharmony_ci 7507777dab0Sopenharmony_ci/** 7517777dab0Sopenharmony_ci * @brief Initializes a MAC operation. 7527777dab0Sopenharmony_ci * 7537777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 7547777dab0Sopenharmony_ci * @param IV Indicates the pointer to the buffer storing the operation IV. If this parameter is not used, 7557777dab0Sopenharmony_ci * set it to <b>NULL</b>. 7567777dab0Sopenharmony_ci * @param IVLen Indicates the length of the IV buffer. 7577777dab0Sopenharmony_ci * 7587777dab0Sopenharmony_ci * @since 12 7597777dab0Sopenharmony_ci * @version 1.0 7607777dab0Sopenharmony_ci */ 7617777dab0Sopenharmony_civoid TEE_MACInit(TEE_OperationHandle operation, void *IV, size_t IVLen); 7627777dab0Sopenharmony_ci 7637777dab0Sopenharmony_ci/** 7647777dab0Sopenharmony_ci * @brief Updates the MAC. 7657777dab0Sopenharmony_ci * 7667777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 7677777dab0Sopenharmony_ci * @param chunk Indicates the pointer to the chunk of MAC data. 7687777dab0Sopenharmony_ci * @param chunkSize Indicates the size of the chunk. 7697777dab0Sopenharmony_ci * 7707777dab0Sopenharmony_ci * @since 12 7717777dab0Sopenharmony_ci * @version 1.0 7727777dab0Sopenharmony_ci */ 7737777dab0Sopenharmony_civoid TEE_MACUpdate(TEE_OperationHandle operation, const void *chunk, size_t chunkSize); 7747777dab0Sopenharmony_ci 7757777dab0Sopenharmony_ci/** 7767777dab0Sopenharmony_ci * @brief MAC Finalizes the MAC operation with a last chunk of message and computes the MAC. 7777777dab0Sopenharmony_ci * 7787777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 7797777dab0Sopenharmony_ci * @param message Indicates the pointer to the buffer containing the last message chunk to MAC. 7807777dab0Sopenharmony_ci * @param messageLen Indicates the length of the message buffer. 7817777dab0Sopenharmony_ci * @param mac Indicates the pointer to the buffer storing the computed MAC. 7827777dab0Sopenharmony_ci * @param macLen Indicates the pointer to the MAC buffer length. 7837777dab0Sopenharmony_ci * 7847777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 7857777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_GENERIC</b> if the operation fails due to other errors. 7867777dab0Sopenharmony_ci * 7877777dab0Sopenharmony_ci * @since 12 7887777dab0Sopenharmony_ci * @version 1.0 7897777dab0Sopenharmony_ci */ 7907777dab0Sopenharmony_ciTEE_Result TEE_MACComputeFinal(TEE_OperationHandle operation, const void *message, size_t messageLen, void *mac, 7917777dab0Sopenharmony_ci size_t *macLen); 7927777dab0Sopenharmony_ci 7937777dab0Sopenharmony_ci/** 7947777dab0Sopenharmony_ci * @brief Finalizes the MAC operation and compares the MAC with the one passed in. 7957777dab0Sopenharmony_ci * 7967777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 7977777dab0Sopenharmony_ci * @param message Indicates the pointer to the buffer containing the last message chunk to MAC. 7987777dab0Sopenharmony_ci * @param messageLen Indicates the length of the buffer. 7997777dab0Sopenharmony_ci * @param mac Indicates the pointer to the buffer storing the computed MAC. 8007777dab0Sopenharmony_ci * @param macLen Indicates the MAC buffer length. 8017777dab0Sopenharmony_ci * 8027777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 8037777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_GENERIC</b> if the operation fails due to other errors. 8047777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_MAC_INVALID</b> if the computed MAC is not the same as that passed in. 8057777dab0Sopenharmony_ci * 8067777dab0Sopenharmony_ci * @since 12 8077777dab0Sopenharmony_ci * @version 1.0 8087777dab0Sopenharmony_ci */ 8097777dab0Sopenharmony_ciTEE_Result TEE_MACCompareFinal(TEE_OperationHandle operation, const void *message, size_t messageLen, const void *mac, 8107777dab0Sopenharmony_ci const size_t macLen); 8117777dab0Sopenharmony_ci 8127777dab0Sopenharmony_ci/** 8137777dab0Sopenharmony_ci * @brief Derives a key. 8147777dab0Sopenharmony_ci * 8157777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 8167777dab0Sopenharmony_ci * @param params Indicates the pointer to the parameters for this operation. 8177777dab0Sopenharmony_ci * @param paramCount Indicates the number of parameters. 8187777dab0Sopenharmony_ci * @param derivedKey Indicates the derived key. 8197777dab0Sopenharmony_ci * 8207777dab0Sopenharmony_ci * @since 12 8217777dab0Sopenharmony_ci * @version 1.0 8227777dab0Sopenharmony_ci */ 8237777dab0Sopenharmony_civoid TEE_DeriveKey(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, 8247777dab0Sopenharmony_ci TEE_ObjectHandle derivedKey); 8257777dab0Sopenharmony_ci 8267777dab0Sopenharmony_ci/** 8277777dab0Sopenharmony_ci * @brief Generates random data. 8287777dab0Sopenharmony_ci * 8297777dab0Sopenharmony_ci * @param randomBuffer Indicates the pointer to the buffer storing the random data generated. 8307777dab0Sopenharmony_ci * @param randomBufferLen Indicates the length of the buffer storing the random data. 8317777dab0Sopenharmony_ci * 8327777dab0Sopenharmony_ci * @since 12 8337777dab0Sopenharmony_ci * @version 1.0 8347777dab0Sopenharmony_ci */ 8357777dab0Sopenharmony_civoid TEE_GenerateRandom(void *randomBuffer, size_t randomBufferLen); 8367777dab0Sopenharmony_ci 8377777dab0Sopenharmony_ci/** 8387777dab0Sopenharmony_ci * @brief Initializes an AE operation. 8397777dab0Sopenharmony_ci * 8407777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 8417777dab0Sopenharmony_ci * @param nonce Indicates the pointer to the buffer for storing the nonce. 8427777dab0Sopenharmony_ci * @param nonceLen Indicates the length of the nonce. 8437777dab0Sopenharmony_ci * @param tagLen Indicates the length of the tag. 8447777dab0Sopenharmony_ci * @param AADLen Indicates the length of the AAD. 8457777dab0Sopenharmony_ci * @param payloadLen Indicates the length of the payload. 8467777dab0Sopenharmony_ci * 8477777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 8487777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_GENERIC</b> if the operation fails due to other errors. 8497777dab0Sopenharmony_ci * 8507777dab0Sopenharmony_ci * @since 12 8517777dab0Sopenharmony_ci * @version 1.0 8527777dab0Sopenharmony_ci */ 8537777dab0Sopenharmony_ciTEE_Result TEE_AEInit(TEE_OperationHandle operation, void *nonce, size_t nonceLen, uint32_t tagLen, size_t AADLen, 8547777dab0Sopenharmony_ci size_t payloadLen); 8557777dab0Sopenharmony_ci 8567777dab0Sopenharmony_ci/** 8577777dab0Sopenharmony_ci * @brief Updates the AAD in an AE operation. 8587777dab0Sopenharmony_ci * 8597777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 8607777dab0Sopenharmony_ci * @param AADdata Indicates the pointer to the new AAD. 8617777dab0Sopenharmony_ci * @param AADdataLen Indicates the length of the new AAD. 8627777dab0Sopenharmony_ci * 8637777dab0Sopenharmony_ci * @since 12 8647777dab0Sopenharmony_ci * @version 1.0 8657777dab0Sopenharmony_ci */ 8667777dab0Sopenharmony_civoid TEE_AEUpdateAAD(TEE_OperationHandle operation, const void *AADdata, size_t AADdataLen); 8677777dab0Sopenharmony_ci 8687777dab0Sopenharmony_ci/** 8697777dab0Sopenharmony_ci * @brief Updates data for an AE operation. 8707777dab0Sopenharmony_ci * 8717777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 8727777dab0Sopenharmony_ci * @param srcData Indicates the pointer to the source data. 8737777dab0Sopenharmony_ci * @param srcLen Indicates the length of the source data. 8747777dab0Sopenharmony_ci * @param destData Indicates the pointer to the destination data. 8757777dab0Sopenharmony_ci * @param destLen Indicates the pointer to the destination data length. 8767777dab0Sopenharmony_ci * 8777777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 8787777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_GENERIC</b> if the operation fails due to other errors. 8797777dab0Sopenharmony_ci * 8807777dab0Sopenharmony_ci * @since 12 8817777dab0Sopenharmony_ci * @version 1.0 8827777dab0Sopenharmony_ci */ 8837777dab0Sopenharmony_ciTEE_Result TEE_AEUpdate(TEE_OperationHandle operation, void *srcData, size_t srcLen, void *destData, size_t *destLen); 8847777dab0Sopenharmony_ci 8857777dab0Sopenharmony_ci/** 8867777dab0Sopenharmony_ci * @brief Finalizes the AE encryption operation. 8877777dab0Sopenharmony_ci * 8887777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 8897777dab0Sopenharmony_ci * @param srcData Indicates the pointer to the source data. 8907777dab0Sopenharmony_ci * @param srcLen Indicates the length of the source data. 8917777dab0Sopenharmony_ci * @param destData Indicates the pointer to the destination data. 8927777dab0Sopenharmony_ci * @param destLen Indicates the pointer to the destination data length. 8937777dab0Sopenharmony_ci * @param tag Indicates the pointer to the buffer storing the computed tag. 8947777dab0Sopenharmony_ci * @param tagLen Indicates the pointer to the tag buffer length. 8957777dab0Sopenharmony_ci * 8967777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 8977777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_GENERIC</b> if the operation fails due to other errors. 8987777dab0Sopenharmony_ci * 8997777dab0Sopenharmony_ci * @since 12 9007777dab0Sopenharmony_ci * @version 1.0 9017777dab0Sopenharmony_ci */ 9027777dab0Sopenharmony_ciTEE_Result TEE_AEEncryptFinal(TEE_OperationHandle operation, void *srcData, size_t srcLen, void *destData, 9037777dab0Sopenharmony_ci size_t *destLen, void *tag, size_t *tagLen); 9047777dab0Sopenharmony_ci 9057777dab0Sopenharmony_ci/** 9067777dab0Sopenharmony_ci * @brief Finalizes an AE decryption operation. 9077777dab0Sopenharmony_ci * 9087777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 9097777dab0Sopenharmony_ci * @param srcData Indicates the pointer to the source data. 9107777dab0Sopenharmony_ci * @param srcLen Indicates the length of the source data. 9117777dab0Sopenharmony_ci * @param destData Indicates the pointer to the destination data. 9127777dab0Sopenharmony_ci * @param destLen Indicates the pointer to the destination data length. 9137777dab0Sopenharmony_ci * @param tag Indicates the pointer to the buffer storing the computed tag. 9147777dab0Sopenharmony_ci * @param tagLen Indicates the tag buffer length. 9157777dab0Sopenharmony_ci * 9167777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 9177777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_MAC_INVALID</b> if the computed tag does not match the provided tag. 9187777dab0Sopenharmony_ci * 9197777dab0Sopenharmony_ci * @since 12 9207777dab0Sopenharmony_ci * @version 1.0 9217777dab0Sopenharmony_ci */ 9227777dab0Sopenharmony_ciTEE_Result TEE_AEDecryptFinal(TEE_OperationHandle operation, void *srcData, size_t srcLen, void *destData, 9237777dab0Sopenharmony_ci size_t *destLen, void *tag, size_t tagLen); 9247777dab0Sopenharmony_ci 9257777dab0Sopenharmony_ci/** 9267777dab0Sopenharmony_ci * @brief Performs asymmetric encryption. 9277777dab0Sopenharmony_ci * 9287777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 9297777dab0Sopenharmony_ci * @param params Indicates the pointer to the parameters for this operation. 9307777dab0Sopenharmony_ci * @param paramCount Indicates the number of parameters. 9317777dab0Sopenharmony_ci * @param srcData Indicates the pointer to the source data. 9327777dab0Sopenharmony_ci * @param srcLen Indicates the length of the source data. 9337777dab0Sopenharmony_ci * @param destData Indicates the pointer to the destination data. 9347777dab0Sopenharmony_ci * @param destLen Indicates the pointer to the destination data length. 9357777dab0Sopenharmony_ci * 9367777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 9377777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_BAD_PARAMETERS</b> if the operation fails due to invalid parameters. 9387777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_GENERIC</b> if the operation fails due to other errors. 9397777dab0Sopenharmony_ci * 9407777dab0Sopenharmony_ci * @since 12 9417777dab0Sopenharmony_ci * @version 1.0 9427777dab0Sopenharmony_ci */ 9437777dab0Sopenharmony_ciTEE_Result TEE_AsymmetricEncrypt(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, 9447777dab0Sopenharmony_ci void *srcData, size_t srcLen, void *destData, size_t *destLen); 9457777dab0Sopenharmony_ci 9467777dab0Sopenharmony_ci/** 9477777dab0Sopenharmony_ci * @brief Performs asymmetric decryption. 9487777dab0Sopenharmony_ci * 9497777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 9507777dab0Sopenharmony_ci * @param params Indicates the pointer to the parameters for this operation. 9517777dab0Sopenharmony_ci * @param paramCount Indicates the number of parameters. 9527777dab0Sopenharmony_ci * @param srcData Indicates the pointer to the source data. 9537777dab0Sopenharmony_ci * @param srcLen Indicates the length of the source data. 9547777dab0Sopenharmony_ci * @param destData Indicates the pointer to the destination data. 9557777dab0Sopenharmony_ci * @param destLen Indicates the pointer to the destination data length. 9567777dab0Sopenharmony_ci * 9577777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 9587777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_BAD_PARAMETERS</b> if the operation fails due to invalid parameters. 9597777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_GENERIC</b> if the operation fails due to other errors. 9607777dab0Sopenharmony_ci * 9617777dab0Sopenharmony_ci * @since 12 9627777dab0Sopenharmony_ci * @version 1.0 9637777dab0Sopenharmony_ci */ 9647777dab0Sopenharmony_ciTEE_Result TEE_AsymmetricDecrypt(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, 9657777dab0Sopenharmony_ci void *srcData, size_t srcLen, void *destData, size_t *destLen); 9667777dab0Sopenharmony_ci 9677777dab0Sopenharmony_ci/** 9687777dab0Sopenharmony_ci * @brief Signs a message digest in an asymmetric operation. 9697777dab0Sopenharmony_ci * 9707777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 9717777dab0Sopenharmony_ci * @param params Indicates the pointer to the parameters for this operation. 9727777dab0Sopenharmony_ci * @param paramCount Indicates the number of parameters. 9737777dab0Sopenharmony_ci * @param digest Indicates the pointer to the message digest. 9747777dab0Sopenharmony_ci * @param digestLen Indicates the digest length. 9757777dab0Sopenharmony_ci * @param signature Indicates the pointer to the signature. 9767777dab0Sopenharmony_ci * @param signatureLen Indicates the pointer to the signature length. 9777777dab0Sopenharmony_ci * 9787777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 9797777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_BAD_PARAMETERS</b> if the operation fails due to invalid parameters. 9807777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_GENERIC</b> if the operation fails due to other errors. 9817777dab0Sopenharmony_ci * 9827777dab0Sopenharmony_ci * @since 12 9837777dab0Sopenharmony_ci * @version 1.0 9847777dab0Sopenharmony_ci */ 9857777dab0Sopenharmony_ciTEE_Result TEE_AsymmetricSignDigest(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, 9867777dab0Sopenharmony_ci void *digest, size_t digestLen, void *signature, size_t *signatureLen); 9877777dab0Sopenharmony_ci 9887777dab0Sopenharmony_ci/** 9897777dab0Sopenharmony_ci * @brief Verifies a message digest signature in an asymmetric operation. 9907777dab0Sopenharmony_ci * 9917777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 9927777dab0Sopenharmony_ci * @param params Indicates the pointer to the parameters for this operation. 9937777dab0Sopenharmony_ci * @param paramCount Indicates the number of parameters. 9947777dab0Sopenharmony_ci * @param digest Indicates the pointer to the message digest. 9957777dab0Sopenharmony_ci * @param digestLen Indicates the digest length. 9967777dab0Sopenharmony_ci * @param signature Indicates the pointer to the signature. 9977777dab0Sopenharmony_ci * @param signatureLen Indicates the signature length. 9987777dab0Sopenharmony_ci * 9997777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 10007777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_BAD_PARAMETERS</b> if the operation fails due to invalid parameters. 10017777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_GENERIC</b> if the operation fails due to other errors. 10027777dab0Sopenharmony_ci * 10037777dab0Sopenharmony_ci * @since 12 10047777dab0Sopenharmony_ci * @version 1.0 10057777dab0Sopenharmony_ci */ 10067777dab0Sopenharmony_ciTEE_Result TEE_AsymmetricVerifyDigest(TEE_OperationHandle operation, const TEE_Attribute *params, uint32_t paramCount, 10077777dab0Sopenharmony_ci void *digest, size_t digestLen, void *signature, size_t signatureLen); 10087777dab0Sopenharmony_ci 10097777dab0Sopenharmony_ci/** 10107777dab0Sopenharmony_ci * @brief Obtains information about the operation involving multiple keys. 10117777dab0Sopenharmony_ci * 10127777dab0Sopenharmony_ci * @param operation Indicates the operation handle. 10137777dab0Sopenharmony_ci * @param operationInfoMultiple Indicates the pointer to the operation information obtained. 10147777dab0Sopenharmony_ci * @param operationSize [IN/OUT] Indicates the pointer to the operation information size. 10157777dab0Sopenharmony_ci * 10167777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the operation is successful. 10177777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_BAD_PARAMETERS</b> if the operation fails due to invalid parameters. 10187777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_SHORT_BUFFER</b> if the operationInfo buffer is not large enough to 10197777dab0Sopenharmony_ci * hold the information obtained. 10207777dab0Sopenharmony_ci * 10217777dab0Sopenharmony_ci * @since 12 10227777dab0Sopenharmony_ci * @version 1.0 10237777dab0Sopenharmony_ci */ 10247777dab0Sopenharmony_ciTEE_Result TEE_GetOperationInfoMultiple(TEE_OperationHandle operation, TEE_OperationInfoMultiple *operationInfoMultiple, 10257777dab0Sopenharmony_ci const size_t *operationSize); 10267777dab0Sopenharmony_ci 10277777dab0Sopenharmony_ci/** 10287777dab0Sopenharmony_ci * @brief Checks whether the algorithm is supported. 10297777dab0Sopenharmony_ci * 10307777dab0Sopenharmony_ci * @param algId Indicates the algorithm to check. 10317777dab0Sopenharmony_ci * @param element Indicates the cryptographic element. 10327777dab0Sopenharmony_ci * 10337777dab0Sopenharmony_ci * @return Returns <b>TEE_SUCCESS</b> if the algorithm is supported. 10347777dab0Sopenharmony_ci * Returns <b>TEE_ERROR_NOT_SUPPORTED</b> otherwise. 10357777dab0Sopenharmony_ci * 10367777dab0Sopenharmony_ci * @since 12 10377777dab0Sopenharmony_ci * @version 1.0 10387777dab0Sopenharmony_ci */ 10397777dab0Sopenharmony_ciTEE_Result TEE_IsAlgorithmSupported(uint32_t algId, uint32_t element); 10407777dab0Sopenharmony_ci 10417777dab0Sopenharmony_ci#ifdef __cplusplus 10427777dab0Sopenharmony_ci} 10437777dab0Sopenharmony_ci#endif 10447777dab0Sopenharmony_ci/** @} */ 10457777dab0Sopenharmony_ci#endif 1046